当rails服务器作为守护程序运行时,Rufus Scheduler未运行

时间:2015-09-11 17:48:13

标签: ruby-on-rails rufus-scheduler

我有一个使用Rufus Scheduler的rails应用程序。当我用:

打开rails服务器时
rails s --port=4000

Rufus调度程序运行其任务。如果我使用:

运行rails服务器
rails s --port=4000 --daemon

鲁弗斯不再完成任务。我添加了几条日志消息。这是日程安排代码:

class AtTaskScheduler

  def self.start
    scheduler = Rufus::Scheduler.new

    p "Starting Attask scheduler"

    scheduler.every('5m') do
      # test sending hip chat message
      issue = Issue.new
      issue.post_to_hipchat("Starting sync with AtTask","SYNC")
      p "Launching Sync"
      Issue.synchronize
    end

  end

end

Hipchat永远不会从调度程序获取消息,并且日志永远不会得到语句"启动同步"。

关于可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:2)

rufus-scheduler docs中有关于此问题的文档:

  

有一个方便的rails server -d启动开发Rails   一个守护进程。令人讨厌的是,如上所示的调度程序是   在主进程中启动,然后进行分叉和守护。该   rufus-scheduler线程(和任何其他线程)丢失,没有调度   发生的情况。

     

我避免在开发模式下运行-d并且担心守护进程   仅用于生产部署。

     

这是关于流程守护进程的两篇精心设计的文章,请   读他们:

           

如果无论如何,您需要rails server -d之类的内容,为什么不试试bundle exec unicorn -D   代替?在我(有限)的经验中,它开箱即用(好吧,   必须先将gem 'unicorn'添加到Gemfile