指定应用程序服务器以使用Sinatra运行rufus-scheduler

时间:2014-12-30 00:22:52

标签: ruby rufus-scheduler

我在config.ru中的configure do块中有一些配置代码,其中包含以下内容:

scheduler = Rufus::Scheduler.new
scheduler.every '1h' do
  # Run a cleanup job which should take place every hour
  ...
end

当我们在engineyard上部署sinatra应用程序时,默认情况下会在app master上生成rufus-scheduler线程,尽管我们希望它们在engineyard内的其他应用程序服务器上生成。如果没有在before_restart.rb中使用条件块,有没有一种好方法可以实现这一点?文档似乎没有涉及到这一点。

deploy / before_restart.rb:

if node[:name] == "app_instance_1" 
  scheduler.every '1h' do
    # Run cleanup job
  end 

结束

scheduler.every块可能必须封装在rake任务中。 任何输入都表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

有一个单独的迷你应用程序来执行计划,从主应用程序中删除计划。

OR

检查config.ru中的主机名:

Kernel.load('deploy/scheduling.rb') if node[:name] == "app_instance_1"

并从deploy / before_restart.rb

中删除条件

OR

有很多方法给猫皮肤......

注意

  

文档似乎没有涉及到这一点。

这是因为它与上下文有关。