对于临时 Rails任务,我们有一些实现替代方案,其中主要似乎是:
script/runner some_useful_thing
和:
rake some:other_useful_thing
我更喜欢哪个选项?如果有一个明显的喜欢那么,如果有的话,我应该考虑使用另一个?如果从来没有,那么为什么你认为它仍然存在于没有弃用警告的框架中?
它们之间的区别在于script/runner
引导Rails而Rake任务没有,除非你通过让任务依赖于它来告诉它:environment
,如下所示:
task :some_useful_task => :environment do # do some useful task end
由于启动Rails很昂贵,如果可以避免它,可能值得跳过.
除此之外,它们大致相同.我使用两者,但最近我使用script/runner
了更多单独执行脚本.
FWIW似乎有一些动作远离使用脚本运行器而不是 rake:
更新(2009年4月25日):我建议使用rake任务而不是脚本/运行器来执行重复任务.
此外,根据这篇文章,您可以使用rake进行重复性任务就好了:
如果我希望这个在午夜时分在我的生产数据库上运行,我可能会写一个看起来像这样的cronjob:
0 0***cd/var/www/apps/rails_app/&&/usr/local/bin/rake RAILS_ENV = production utils:send_expire_soon_emails
至少可以说,将参数传递给rake任务是一个痛苦的屁股.您需要求助于环境变量或非常讨厌的参数系统,这些参数系统不直观并且有很多警告.
如果您的任务需要优雅地处理命令行参数,那么编写脚本是可行的方法.
Luke Francl提到脚本/跑者启动Rails.确实如此.但是,如果您不想启动rails,那么只需按原样运行脚本,而不使用script/runner.因此,脚本和rake任务之间唯一真正的区别在于它们的美学.选择适合自己的感觉.
我使用rake任务执行小任务(一行或两行).更复杂的东西进入脚本/目录.如果我认为其他开发人员希望代码在一个地方生活在另一个地方,我会打破这个规则.
根据评论2进行更正.给他们业力!
FWIW - Rails 3.0+更改了在独立脚本中初始化Rails系统的方式.
require File.dirname(__FILE__) + '/config/environment'
如上所述,您还可以:
rails runner script/Tags | 热门标签RankList | 热门文章
- 1在控制器中呈现数据,然后在视图中呈现数据
- 2如何在Gradle中隐藏传递依赖?
- 3如何检测未引用或双引号的空间
- 4不能将vector作为参数c ++传递
- 5使用Swift在Xcode 7.1.1下"使用优化编译了Realm"
- 6React - react.render上的未处理错误事件()
- 7如何在Swift中使用两个闭包作为参数创建函数?
- 8我的<circle>在哪里?
- 9程序获取(项目:输出字符串); (在一个函数中)
- 10检查scanf的输入
- 11在条件中分配多个val
- 12在Python 3.x中更改了`__rdiv __()`和`__idiv__`运算符?
- 13git拉在另一个分支上
- 14宝石更新后:测试失败,"资产未声明在生产中预编译"
- 15Oozie:从Oozie <java>行动中启动Map-Reduce?
- 16如何解释Azure VM的instanceView的状态?
- 17django.db.utils.OperationalError:(1046,'没有选择数据库')
- 18Go:"实例"在此块中重新声明
- 19如何使用dplyr连接多个数据框?
- 20sql删除行错误