1

アプリを heroku にテスト用に、amazon に本番用にデプロイしました。テストと開発 (ローカル) では postgresql を使用し、Amazon EC2 では Mysql を使用しました。したがって、pg gem はテストと開発でのみロードし、mysql2 gem は本番環境でロードする必要があります。

問題を回避するためのベスト プラクティスは何ですか?

ありがとう

4

2 に答える 2

1

Rails 3.2 と Rails 4 で Gemfile の動作は異なりますか?
そうでない場合は、どの gem をどの環境にロードするかを指定できます。

group :development, :test do
  gem "pg"
end

group :production do
  gem "mysql2"
end
于 2013-05-21T03:55:07.220 に答える
1

ベスト プラクティスは、開発、テスト、および運用に同じ dbms を使用することです。しかし、それがあなたの聞きたかったことかどうかは疑わしい...

いずれにせよ、バンドラーはこのシナリオをサポートしていません。つまり、特定の gem を特定の環境にインストールしないように単純に指示することはできません (それらが使用されない場合でも)。(@mind.blank が提案したように) ブロックで宣言することにより、特定の gem をロードしないように指示できますgroupが、それらは引き続きインストールされます。ただし、特定の条件が与えられたときに特定のコードのみを実行する (および特定の gem をロード/インストールする) ために、単純な ruby​​ コンストラクト、つまりブロックを使用することはできif-elseます。case

これに関する問題は、Gemfile.lock ファイルが展開全体で同期されなくなることです。これは、バンドラー (または Capistrano) が期待するものではありません。ただし、デプロイに Gemfile.lock ファイルを無視するように指示するために使用できるフラグがありbundle install、本当に必要な場合は Gemfile の読み取りに基づいています...

于 2013-05-21T03:56:12.060 に答える