调试Rufus调度程序

我在我的Rails控制台中这样做:

job = scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end job.schedule_info => Wed, 07 Aug 2013 16:14:46 UTC 00:00 

scheduler在其他文件中定义:

 require 'rubygems' require 'rufus/scheduler' def scheduler @scheduler ||= Rufus::Scheduler.start_new end 

当我在控制台中运行时:

 Service.log.debug 'scheduler works' 

写入服务日志文件。

问题

 scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end 

一分钟后不写入日志。 我错过了什么? 我怎么调试这个?

实际问题

我在EC2中有一台服务器似乎已关闭,并且未运行计划任务。

事实是,在我的开发环境中,我测试了一分钟内运行的任务,它可以工作。 这是在服务器而不是在控制台中。 在控制台中,正如我所提到的那样失败。

开发环境

ruby 1.9.3p327(2012-11-10修订版37606)[x86_64-darwin12.0.0]

瘦1.5.0

远程环境

ruby 1.9.3p429(2013-05-15修订版40747)[x86_64-linux]

apache2 2.2.22

乘客4.0.5

gem

rails 3.2.8

rufus-scheduler 2.0.18

那是经典之作:

https://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger&pli=1 https://groups.google.com/forum/#!searchin/rufus-ruby/passenger(new谷歌组)

(不幸的是,这些讨论中的大多数链接已经死亡(4年前……))

您必须检查Passenger配置以查看其行为方式。 您必须确保以某种方式保留启动rufus-scheduler线程的进程。

花点时间阅读Passenger配置/手册并进行实验调整。

我依稀记得那些可以帮助:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances

他提倡Ajet在Rufus Scheduler中没有运行的答案很有趣,他提倡:

 RailsAppSpawnerIdleTime 0 PassengerMinInstances 1 

我不得不在Apache VirtualHost中为我的Dashing应用程序(使用rufus-scheduler)使用“PassengerSpawnMethod direct”设置来使其正常工作。