J'utilisais une application Sinatra en utilisant ActiveRecord sur CentOS 8 + Apache 2.4 + Phusion Passenger 6.0. La version de Ruby est 2.7.1, mais peut-être que cette version n'a pas vraiment d'importance.
Cela fonctionnait dans Passenger 6.0.4, mais dans 6.0.6, il ne démarre même pas en production. Il fonctionne correctement sur place (local).
Dans le journal des erreurs Apache (/ var / log / httpd / error_log), j'ai trouvé ce qui suit.
'production' database is not configured. Available: [](ActiveRecord::AdapterNotSpecified)
Apparemment, le changement introduit dans Passenger 6.0.5 en est la cause. Il y a un problème ici. https://github.com/phusion/passenger/issues/2281
Des problèmes similaires peuvent survenir en dehors de Sinatra, mais pas dans Rails (probablement).
L'application Sinatra est aussi simple que de rechercher et d'afficher à l'avance les données stockées dans la base de données SQLite3. Les fichiers de base de données ne sont pas spécifiquement divisés entre ceux destinés à la production et ceux destinés au développement.
Où est la connexion
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: db_file)
Je l'ai écrit comme ça.
Le chemin du fichier SQLite3 est affecté à la variable locale db_file
.
Apparemment, je dois définir ʻActiveRecord :: Base.configurations`, alors faites ce qui précède
ActiveRecord::Base.configurations = {
"production" => {"adapter" => "sqlite3", "database" => db_file },
"development" => {"adapter" => "sqlite3", "database" => db_file },
}
ActiveRecord::Base.establish_connection
Je l'ai changé comme ça.
Maintenant, cela fonctionne en production.
Recommended Posts