2015-09-11 6 views
1

У меня есть приложение rails, которое использует Rufus Scheduler. Когда я включаю сервер рельсов с:Rufus Scheduler не работает, когда сервер rails работает как демон

rails s --port=4000 

Rufus scheduler выполняет свои задачи. Если я запустил сервер rails с:

rails s --port=4000 --daemon 

Rufus больше не выполняет свои задачи. Я добавил пару сообщений журнала. Вот код график:

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 никогда не получает сообщение от планировщика и журнал никогда не получает заявление «запускающего Sync».

Любые идеи о том, что может быть причиной этого?

ответ

2

Существует документация этого вопроса в rufus-scheduler docs:

Существует Удобный rails server -d, запускающий Rails развития как демона. Досадно, что планировщик, как показано выше, - , начался в основном процессе, который затем разворачивается и демонизируется. поток rufus-scheduler (и любой другой поток) теряется, нет планирования .

Я избегаю запускать -d в режиме разработки и беспокоиться о демонализации только для развертывания производства.

Эти два хорошо Выделанной статьи о процессе daemonization, пожалуйста их читать:

Если в любом случае, вам нужно что-то вроде rails server -d, почему бы не попробовать bundle exec unicorn -D вместо? В моем (ограниченном) опыте он работал из коробки (ну, должен был добавить gem 'unicorn' в Gemfile).

+0

Спасибо! Это отличный промежуточный шаг. Сейчас я читаю ваши статьи и определяю лучший способ продвижения вперед. – DGuimar