我有一个需要每分钟执行一次的周期性任务(使用delayed_job)。我希望Rails在加载完成后自动将其排队,如果系统中还没有这样的任务。
在整个Rails启动流程结束时运行一些代码对我来说有什么好处?有人建议使用config / environments / development.rb(或其他环境),但是当我从那里排队作业时,delayed_job会给我ActiveRecord问题。
我咨询了http://guides.rubyonrails.org/initialization.html,并且似乎没有明确的位置来处理这类代码。
这种部署后设置是否可能在我的应用程序代码外部完成,可能是通过rake或其他方式?有什么建议吗?
谢谢!
答案 0 :(得分:8)
关于http://guides.rubyonrails.org/initialization.html,抱歉,我们正在努力重写它。对于您的问题,我会尝试使用您的application.rb中的config.after_initialize
def after_initialize(&block)
ActiveSupport.on_load(:after_initialize, :yield => true, &block)
end
答案 1 :(得分:3)
将您的代码添加到初始化程序目录中。
http://guides.rubyonrails.org/configuring.html#using-initializer-files
答案 2 :(得分:2)
你真的有两个选择
1)将它添加到初始化程序目录中,这应该没问题。
2)在application.rb的最后添加它,这不太干净但是此时会有初始化器准备就绪;如果1)因为AR问题而失败那么做2)