質問

私は、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_ENVproductionに自動的に設定するためです。これはシェルに影響を与えませんが、デフォルトはdevelopmentです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top