yamlファイルをメモリに読み込んで解析する場合は、現在の環境(または何も設定されていない場合はデフォルト)を使用するロジックを配置するのに適した場所です。これを行う簡単な方法は、環境変数に依存することです(Railsアプリでない場合はRAILS_ENVを使用せず、Rackアプリでない場合はRACK_ENVを使用しないでください)。
次のようなものを使用します:
my_env = ENV['MY_ENV_VARIABLE'] || 'development'
db_settings = YAML::load(File.open(yml_file))[my_env]
次に、次の方法でrakeを呼び出すことができます。
MY_ENV_VARIABLE=production rake my_task
または、タスク自体にパラメータを追加する場合は、使用するように設定できます
rake my_task[production]
(ただし、zshのように、全体を引用する必要があるかどうかによっては、面倒になる可能性があります)。
一部のライブラリ(heroku_sanなど)が使用する別のアプローチは、環境変数を設定する個別のタスクを用意し、複数のタスクの呼び出しに依存することです。これにより:production
、環境変数を設定してから呼び出すことができるタスクが作成されます。
rake production my_task