Rails 4:製造の代わりにキャピストラノ開発環境?
-
21-12-2019 - |
質問
私は、Capistrano GEMを仮想プライベートサーバーに登録するRailsアプリケーションの製造環境を展開しています。次のコマンドを実行して展開します。
bundle exec cap production deploy
.
現在の生産リリースがどの環境で動作しているかを確認しようとしていない限り、すべてがうまく機能しているようです。
これをチェックするために使用する1つの方法は実行されることです:
rails console
Rails.env
.
私が受け取る答えは、非常に恐ろしい「開発」です。
別のテスト中:現在のリリースで次の点を実行すると:
rails db
.
mydatabase_developmentが作成されていないと述べるエラーが発生します。
私のアプリケーションはうまく動作しているようですが、これが大きな問題を前進させるかどうかわかりません。まず第一に:私のライブコピーが実際に開発中に実行されているかどうかを判断する方法はありますか?第二に:私が問題を抱えていることを考えると、Capistranoをプロダクション環境の展開にどのように設定するのですか?
解決
rails console
は、環境内のRAILS_ENV
またはRACK_ENV
によって決定されているように、現在の環境に従事していることに注意してください。サーバーにこれを明示的に設定しない場合は、おそらくdevelopment
にデフォルトになります。
これを修正する1つの方法は、あなたの.bash_profile
または使用しているシェルプロファイルに強制することです。例えば:
export RAILS_ENV=production
.
それを利用可能にするべきであり、あなたがあなたのRailsシェルを参加させるときそれは正しくキックします。
Noteとして、config/database.yml
にその名前のエントリがあるはずではないので、本番サーバで開発モードで開始できるはずです。ベストプラクティスは、Production Serverにconfig/database.yml
のみを保存し、あなたのCapistrano展開中にそれを移動することです。
これをconfig/deploy.rb
に追加する:
set :linked_files, %w[
config/database.yml
]
.
次に、展開時に所定の位置にリンクされるようになるshared/config/database.yml
で専用設定を作成します。バージョン管理システムからconfig/database.yml
を必ず除外してください。
あなたのサイトがおそらく大丈夫である理由は、他に構成されていない限り、乗客のようなランチャーがRACK_ENV
をproduction
に自動的に設定するためです。これはシェルに影響を与えませんが、デフォルトはdevelopment
です。