Ich habe eine Sinatra-App mit ActiveRecord unter CentOS 8 + Apache 2.4 + Phusion Passenger 6.0 ausgeführt. Die Version von Ruby ist 2.7.1, aber vielleicht spielt diese Version keine Rolle.
Es hat in Passenger 6.0.4 funktioniert, aber in 6.0.6 startet es nicht einmal in der Produktion. Es funktioniert ordnungsgemäß (lokal).
Im Apache-Fehlerprotokoll (/ var / log / httpd / error_log) habe ich Folgendes gefunden.
'production' database is not configured. Available: [](ActiveRecord::AdapterNotSpecified)
Anscheinend ist die in Passenger 6.0.5 eingeführte Änderung die Ursache. Hier gibt es ein Problem. https://github.com/phusion/passenger/issues/2281
Ähnliche Probleme können außerhalb von Sinatra auftreten, jedoch (wahrscheinlich) nicht in Rails.
Die Sinatra-App ist so einfach wie das vorherige Suchen und Anzeigen der in der SQLite3-Datenbank gespeicherten Daten. Datenbankdateien sind nicht speziell in solche für die Produktion und solche für die Entwicklung unterteilt.
Wo die Verbindung ist
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: db_file)
Ich habe es so geschrieben.
Der Pfad der SQLite3-Datei wird der lokalen Variablen db_file
zugewiesen.
Anscheinend muss ich "ActiveRecord :: Base.configurations" einstellen, also mache ich das oben genannte
ActiveRecord::Base.configurations = {
"production" => {"adapter" => "sqlite3", "database" => db_file },
"development" => {"adapter" => "sqlite3", "database" => db_file },
}
ActiveRecord::Base.establish_connection
Ich habe es so geändert.
Jetzt funktioniert es in der Produktion.
Recommended Posts