2010-11-17 10 views
2

私は大規模なRailsアプリケーションを使用しています。私は、db:migrateやresetなどの本番環境で実行すると危険なレイクタスクを無効にすることを任されています。しかし、私はここでの行動の最良のコースが何であるか分かりません。特定のレイクタスクのグループを無効にする

は、これまでのところ私の解決策は、

if ENV['RAILS_ENV'] == 'development' || ENV['RAILS_ENV'] == 'test' 

が今、明らかに、これはすべての環境が、開発やテストのためのすべてのデータベースすくいタスクを無効にdatabases.rakeタスクの先頭に次のように文を置くことです。しかし、私はこれがハッキーだと感じ、私はそれが好きではありません。誰もがこの問題を解決する良い方法を考えることができる、またはこのソリューションは私が実現していないかもしれない任意の大きな問題を提起していますか?

編集:私が遭遇した問題への側面の質問。私はうまく働いた

export RAILS_ENV=production 

を経由して「生産」への私のRAILS_ENVを設定すると、しかし、私は戻って、デフォルト「」環境への私の環境を設定する必要があります。私は

export RAILS_ENV= 

をしようとすると、私は

No such file or directory - project_path/config/environments/.rb 

エラーを取得する誰もが戻ってデフォルトに環境をリセットする方法を知っていますか?

答えて

1

ご質問にお答えしますが、デフォルトの環境は「開発」です。だから、試してみてください:

export RAILS_ENV=development 

何をやっている(あなたが望むものである、全く存在しない、それは異なっている)RAILS_ENVに空の文字列を割り当てることです。これを実現するために、試してみてください。

また
export -n RAILS_ENV 

、あなた自身が(すくいタスクなどのような)、ワンショットコマンドのため、このような環境を切り替え見つけた場合、あなたが呼び出すときにそれを定義し、変数をエクスポートしないで試してみてくださいコマンド:

RAILS_ENV=production rake db:migrate 

このようにして、コマンドが完了すると、エクスポートされたRAILS_ENV変数はありません。 rakeの特定の呼び出し(またはあなたが望むコマンド)のためだけに定義されていると考えてください。

関連する問題