9

我有一个需要每分钟执行一次的周期性任务(使用delayed_job)。如果系统中不存在这样的任务,我希望 Rails 在加载完成后立即自动将其排队。

在整个 Rails 引导流程结束时运行一些代码的好地方是什么?有人建议 config/environments/development.rb (或其他环境),但是当我从那里排队作业时,delayed_job 给了我 ActiveRecord 问题。

我查阅了http://guides.rubyonrails.org/initialization.html,似乎也没有明确的位置可以存放那种代码。

这种部署后设置是否可能在我的应用程序代码外部完成,可能通过 rake 或其他方式完成?有什么建议么?

谢谢!

4

3 回答 3

8

关于http://guides.rubyonrails.org/initialization.html,对不起,我们正在努力重写它。对于您的问题,我会config.after_initialize在您的 application.rb 中尝试

def after_initialize(&block)
  ActiveSupport.on_load(:after_initialize, :yield => true, &block)
end
于 2012-06-11T02:39:54.943 回答
4

在初始化程序目录中添加您的代码。

http://guides.rubyonrails.org/configuring.html#using-initializer-files

于 2012-06-10T21:25:39.317 回答
2

你真的有两个选择

1)将其添加到初始化程序目录中,这应该没问题。

2)将它添加到 application.rb 的最后,这不太干净,但此时它会准备好初始化程序之类的东西;p 所以如果 1)由于 AR 问题而失败,请执行 2)

于 2012-06-10T21:28:21.517 回答