禁用特定的rake任务组

时间:2010-11-17 23:26:05

标签: ruby-on-rails ruby rake

我正在使用大型Rails应用程序,我的任务是禁用在我们的生产环境中运行可能有害的rake任务,例如db:migrate,reset等。但是我不确定这里最好的做法是什么。

到目前为止,我的解决方案是将这样的语句放在databases.rake任务的顶部

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

现在显然这会禁用除开发和测试之外的所有环境的所有数据库rake任务。但是,我觉得这很hacky,我不喜欢它。任何人都可以想到一个更好的方法来解决这个问题,或者这个解决方案是否会带来我可能没有意识到的更大问题?

编辑:我遇到的问题的一个问题。当我通过

将RAILS_ENV设置为'production'时
export RAILS_ENV=production

这很好,但我需要将我的环境设置回默认的环境。当我尝试

export RAILS_ENV=

我收到错误

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

有谁知道如何将环境重置为默认值?

2 个答案:

答案 0 :(得分:1)

至于你方面的问题,默认环境是“开发”。所以你可以试试:

export RAILS_ENV=development

你正在做的是为RAILS_ENV分配一个空字符串(这与它根本不存在,这是你想要的)。要做到这一点,请尝试:

export -n RAILS_ENV

另外,如果您发现自己为一次性命令(如rake任务等)切换这样的环境,您可能会尝试不导出变量,只需在调用命令时定义它:

RAILS_ENV=production rake db:migrate

这样,命令完成后,您没有导出的RAILS_ENV变量;把它想象成只是为了特定的rake调用(或者你想要的任何一个命令)。

答案 1 :(得分:0)