2010-11-17 53 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变量;把它看作是为特定的耙子调用(或你想要的任何命令)而定义的。