Rails 4:停止“rake”运行所有rake任务

时间:2014-09-23 18:23:14

标签: ruby-on-rails ruby-on-rails-4 rake

开发人员有权删除数据库,但不能重新创建数据库。在处理rake任务时,他意外地运行了整个rake套件,其中包括销毁开发数据库但没有适当的权限来重新创建和填充它。

我怎样才能确保不再发生这种情况?在Rails应用程序中是否有某种方法来覆盖运行rake,以便它不执行一堆未指定的任务?

开发人员正在寻找任务列表,并认为运行rake会提供该列表,类似于运行rails本身发出指示的方式。

我知道rake有一个binstub,但我真的不知道如果我弄乱那里的东西会发生什么。

这种情况有什么好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

设置默认任务? IIRC,在namespace区块之外:

task :default => "something_that_doesnt_destroy_the_world"

答案 1 :(得分:0)

从Dave的回答和另一个SO问题(再次找不到链接)中记下,这里是如何覆盖Rails 4中的默认rake任务。

# lib/tasks/default.rake (name is not important)
namespace :override do
  task :default do
    puts "This is now the default rake task executed via 'rake'"
  end
end

# Remove default task and switch to above (still in same file)
task(:default).clear.enhance ["override:default"]

在终端:

$ rake
/lib/tasks/default.rake: this is now the default 'rake' task

如果有“更干净”或更“传统”的Rails方式,任何人都欢迎大声喊出来。这是我能找到的“最干净”的解决方案。