我正在使用大型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
有谁知道如何将环境重置为默认值?
答案 0 :(得分:1)
至于你方面的问题,默认环境是“开发”。所以你可以试试:
export RAILS_ENV=development
你正在做的是为RAILS_ENV分配一个空字符串(这与它根本不存在,这是你想要的)。要做到这一点,请尝试:
export -n RAILS_ENV
另外,如果您发现自己为一次性命令(如rake任务等)切换这样的环境,您可能会尝试不导出变量,只需在调用命令时定义它:
RAILS_ENV=production rake db:migrate
这样,命令完成后,您没有导出的RAILS_ENV变量;把它想象成只是为了特定的rake调用(或者你想要的任何一个命令)。
答案 1 :(得分:0)