【发布时间】:2013-03-28 09:48:10
【问题描述】:
使用rails 中的when gem 设置cron 作业时是否可以有多个schedule.rb 文件?我希望有一个常规的 schedule.rb 文件和一个将部署到不同服务器的 reports_schedule.rb 文件,它有自己的特定报告环境。
无论何时使用 schedule.rb 文件如何?这可能吗?
【问题讨论】:
标签: ruby ruby-on-rails-3 crontab whenever
使用rails 中的when gem 设置cron 作业时是否可以有多个schedule.rb 文件?我希望有一个常规的 schedule.rb 文件和一个将部署到不同服务器的 reports_schedule.rb 文件,它有自己的特定报告环境。
无论何时使用 schedule.rb 文件如何?这可能吗?
【问题讨论】:
标签: ruby ruby-on-rails-3 crontab whenever
看起来有点难看是可能的。查看源代码on job_list.rb:25 whenever just does an instance eval。因此,您可以执行以下操作。
schedule.rb
#Load reporting schedules
instance_eval(File.read('reporting_schedule.rb'), 'reporting_schedule.rb')
# All your regular jobs
# ...
reporting_schedule.rb
#Need some way to know if you are on the reporting server
if `hostname` =~ /reporting_server/
# All your reporting jobs
# ...
end
帮助我使用when 命令进行了一些快速测试。虽然没有尝试在部署中使用它。
【讨论】:
不确定这是否是在提出问题后添加的,但您现在似乎可以进行基于角色的调度:请参阅https://github.com/javan/whenever 的自述文件
【讨论】: