異なるデータベース接続があるとしましょう...
今のところ、この例の目的のために、開発のみに関心を持ってみましょう。'rake db:setup'を実行すると、開発が作成されるだけです。これは、rakeタスクの観点からは、他の接続が別の環境であるためです。他の接続をRAILS_ENVとして渡して、データベースを作成することもできます。ただし、問題は、データベース接続をどのように定義したかにあります。これを元に戻すのは、管理と展開がはるかに簡単になるため、やり直したくありません。私たちがやったことはこれです...
database.ymlに、次のコードを追加しました。
databases_file = File.join(Rails.root.to_s, "config", "databases", "#{Rails.env.to_s}.yml")
IO.read(databases_file) if File.exist?(databases_file)
次に、configの下のdatabasesサブフォルダーに、さまざまな環境のymlファイルを作成しました。
したがって、development.ymlには...
development:
... details ...
logging:
... details ...
ここで、RAILS_ENVを「logging」に設定すると、ファイルはdevelopment.ymlと呼ばれるため、ファイルが読み込まれることはありません。したがって、ロギング接続は検出されません。
これらすべての設定をdatabase.ymlファイルに統合すると、database.ymlをgitリポジトリにチェックインせず、新入社員などのために開発マシンで手動で作成する必要があります。また、展開プロセスを変更して、ファイルを下位環境に配置し始める必要があります。(私たちの生産プロセスはすでにこれをサポートしています)