[RUBY] Sinatra App mit ActiveRecord starb in Passenger 6.0.5

Worüber redest du?

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)

Ursache

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.

Toter Code

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.

Fix

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

Sinatra App mit ActiveRecord starb in Passenger 6.0.5
Dekorieren Sie Ihre Sinatra-App mit CSS
Erstellen Sie eine REST-API mit Apache2 + Passenger + Sinatra.
Versuchen Sie es mit der Ressourcenanweisung in der Web-App
Üben Sie das Erstellen einer einfachen Chat-App mit Docker + Sinatra
Pulldown in der ursprünglichen App mit Active Hash implementiert
Janken App in Java