2012-06-10 129 views
8

我有一个需要每分钟执行一次的周期性任务(使用delayed_job)。我希望Rails在加载完成后立即自动排队,如果这样的任务还没有出现在系统中。Rails加载完成后运行代码?

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

我查阅了http://guides.rubyonrails.org/initialization.html,而且这种代码似乎也没有明确的位置。

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

谢谢!

+0

cron作业? (15个字符) –

回答

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 
2

你有两种选择真的

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

2)在application.rb中的最后添加它,这是不干净的,但它会之类的初始化准备在这一点上,所以如果1)失败的原因为AR问题p做2)