对于临时的Rails任务,我们有一些实现的替代方案,其中主要的替代方案似乎是:
script/runner some_useful_thing
和:
rake some:other_useful_thing
我应该选择哪个选项?如果有明确的偏爱,那么我何时应该考虑使用另一个?如果从来没有,那么您为什么会认为它仍然存在于框架中而没有弃用警告?
Answers:
它们之间的区别是script/runner
引导Rails,而Rake任务则不会启动,除非您通过使任务依赖于Rake来告诉它:environment
,如下所示:
task :some_useful_task => :environment do
# do some useful task
end
由于引导Rails的成本很高,因此如果可以避免的话,可能值得跳过。
除此之外,它们大致相等。我两者都用,但是最近我习惯script/runner
了分别执行脚本。
至少可以说,将参数传递给rake任务是一个麻烦。您要么需要求助于环境变量,要么需要使用非常笨拙的参数系统,该系统不直观且有很多警告。
如果您的任务需要优雅地处理命令行参数,那么编写脚本是您的最佳选择。
Luke Francl提到脚本/运行程序启动Rails。确实如此。但是,如果您不想启动rails,则只需按原样运行脚本即可,而无需脚本/运行器。因此,脚本和耙任务之间的唯一真正区别是它们的美观。选择适合您的事物。
我将rake任务用于小任务(一两行)。任何更复杂的内容都进入script /目录。如果我认为其他开发人员会期望代码位于一个地方而不是另一个地方,那么我将打破此规则。
我所做的一件事就是编写普通的ruby脚本并将其放在script/maintenance
目录中。
加载滑轨并访问所有模型等所需要做的一切都放在require '../../config/environment.rb'
文件的顶部,然后您就可以离开了。
对于一个关闭命令,脚本/运行程序就可以了。对于重复的任何事情,从长远来看,瑞克任务比较容易,如果您忘记了它的作用,则有摘要。