我在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应用程序时,默认情况下rufus-scheduler线程是在应用程序主服务器上产生的,尽管我们希望它们在engineyard内的其他应用程序服务器上产生。在before_restart.rb中没有条件块的情况下,有没有好的方法来实现这一点呢?文档似乎没有涉及到这一点。
部署/在_restart.rb之前:
if node[:name] == "app_instance_1"
scheduler.every '1h' do
# Run cleanup job
end 结束
scheduler.every块可能必须封装在rake任务中。任何意见都是值得感谢的。谢谢。
发布于 2014-12-30 08:43:47
有一个单独的小型应用程序来做调度,从你的主应用程序中删除调度。
或
检查config.ru中的主机名:
Kernel.load('deploy/scheduling.rb') if node[:name] == "app_instance_1"并从deploy/before_restart.rb中删除条件
或
给猫剥皮的方法太多了。
便笺
文档似乎没有涉及到这一点。
这是因为它是如此依赖于上下文。
https://stackoverflow.com/questions/27697966
复制相似问题