2010-11-17 67 views
2

我正在使用一個大的Rails應用程序,並且我的任務是禁用如果在我們的生產環境(如db:migrate,reset等)上運行時可能有害的rake任務。但是我不確定這裏最好的行動方式是什麼。禁用特定的rake任務組

到目前爲止,我的解決辦法是把如下語句在databases.rake任務的頂部

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

現在很明顯這將禁用所有適用於所有環境,但開發和測試數據庫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變量;把它看作是爲特定的耙子調用(或你想要的任何命令)而定義的。