我有Rails 4.2应用程序,我想在服务器启动时执行一些一次性代码。
我的第一种方法是在config/initializers
中使用初始化程序来运行代码。但在这种情况下,代码也正在执行所有rake任务和Sidekiq进程。
所以我创建了一个rake任务来运行我的代码。现在我想知道如何与rails服务器启动一起执行它。当然,我可以创建一个shell脚本来执行我的rake任务,然后启动服务器。但有没有实现这一目标的轨道?
Foreman是SO的另一种方法advised,但它对我不起作用,因为我的任务不是守护进程,并且该进程在完成后立即终止。显然,Procfile中的所有进程都必须进行守护。
答案 0 :(得分:0)
可以通过在与守护任务相同的过程中运行Foreman来实现(例如使用rails server
)。
如果一次性收入是rake lego:update_all
然后相应的Procfile是
web: rake lego:update_all && rails s
sidekiq: bundle exec sidekiq