Frage

Ich stelle die Produktionsumgebung meiner Ruby on Rails-Anwendung mit dem Capistrano-Gem auf einem virtuellen privaten Server bereit.Zum Bereitstellen führe ich den folgenden Befehl aus:

bundle exec cap production deploy

Alles scheint gut zu funktionieren, es sei denn, ich versuche zu überprüfen, in welcher Umgebung meine aktuelle Produktionsversion läuft.

Eine Möglichkeit, dies zu überprüfen, besteht darin, Folgendes auszuführen:

rails console
Rails.env

Die Antwort, die ich bekomme, ist „Entwicklung“, was ziemlich beängstigend ist.

Bei einem anderen Test:wenn ich in meiner aktuellen Version Folgendes ausführe:

rails db

Ich erhalte eine Fehlermeldung, die besagt, dass mydatabase_development nicht erstellt wurde.

Meine Anwendung scheint gut zu laufen, aber ich weiß nicht, ob dies in Zukunft zu größeren Problemen führen wird.Erstens:Gibt es eine Möglichkeit festzustellen, ob meine Live Copy tatsächlich in der Entwicklung läuft?Zweitens:Da ich ein Problem habe, wie konfiguriere ich capistrano für die Bereitstellung einer Produktionsumgebung?

War es hilfreich?

Lösung

Denk daran, dass rails console engagiert sich in der aktuellen Umgebung, wie von ihr vorgegeben RAILS_ENV oder RACK_ENV in Ihrer Umgebung.Wenn Sie dies nicht explizit auf Ihrem Server einrichten, wird es wahrscheinlich standardmäßig verwendet development.

Eine Möglichkeit, dies zu beheben, besteht darin, es in Ihrem Browser zu erzwingen .bash_profile oder welches Shell-Profil auch immer Sie verwenden.Zum Beispiel:

export RAILS_ENV=production

Dadurch sollte es verfügbar sein, und wenn Sie Ihre Rails-Shell aktivieren, wird es ordnungsgemäß aktiviert.

Bitte beachten Sie, dass Sie nicht einmal in der Lage sein sollten, den Entwicklungsmodus auf Ihrem Produktionsserver zu starten, da dort kein Eintrag mit diesem Namen vorhanden sein sollte config/database.yml.Eine bewährte Methode ist das Speichern config/database.yml nur auf dem Produktionsserver und verschieben Sie es während Ihrer Capistrano-Bereitstellung.

Fügen Sie dies zu Ihrem hinzu config/deploy.rb:

set :linked_files, %w[
  config/database.yml
]

Anschließend erstellen Sie eine Konfiguration nur für die Produktion shared/config/database.yml Diese werden bei der Bereitstellung verknüpft.Unbedingt ausschließen config/database.yml von Ihrem Versionskontrollsystem, damit es nicht bereitgestellt wird.

Der Grund dafür, dass Ihre Website wahrscheinlich in Ordnung ist, liegt darin, dass ein Launcher wie Passenger automatisch eingestellt wird RACK_ENV Zu production sofern nicht anders konfiguriert.Dies hat jedoch keine Auswirkungen auf Ihre Shell, die standardmäßig aktiviert ist development.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top