Запуск Resque при загрузке / перезагрузке пассажира

Моя среда: Rails 3.2.x с RVM, Passenger, Apache на Linux (Ubuntu), я не использую Capistrano и пока не собираюсь этого делать.

Я интегрировал Resque в свое приложение Rails, и все работает хорошо при ручном запуске resque с помощью

rake RAILS_ENV=production environment resque:work QUEUE='*'

Следующим шагом будет автоматический запуск (перезапуск) Resque при запуске (перезапуске) Passenger.

Как мне это сделать?


person KKK    schedule 24.06.2012    source источник


Ответы (1)


Как насчет использования Foreman для решения этой проблемы?

Foreman — это инструмент на основе procfile для управления многопроцессорными приложениями rails.

Простое введение можно увидеть на railscasts. Пример может выглядеть так:

web: bundle exec rails server
solr: bundle exec rake sunspot:solr:run
resque: rake RAILS_ENV=production environment resque:work QUEUE='*'
person ernd enson    schedule 24.06.2012
comment
Я стараюсь, чтобы мой производственный сервер был как можно более компактным, избегая всех зависимостей, насколько это возможно. Тем не менее, на первый взгляд выглядит достойно второго взгляда. Но вопрос, как запустить Foreman при старте системы или интегрировать его в Passenger? - person KKK; 24.06.2012
comment
Например, через экспорт upstart, который вы можете создать с помощью развертывания capistrano, а затем использовать при запуске. - person ernd enson; 24.06.2012
comment
namespace :foreman do task :export, :roles =› :db do run cd #{release_path} && bundle exec foreman export upstart /etc/init -u #{user} -a #{application} -f Procfile.#{rails_env } end task :restart, :roles =› :app do run restart #{application} || начало # {приложение} конец конец - person ernd enson; 24.06.2012
comment
Я пытаюсь реализовать это, но хочу ли я, чтобы бригадир начал rails server? Разве это не должно быть оставлено пассажиру? - person Prathan Thananart; 17.01.2013
comment
@PrathanThananart: это зависит от того, какой тип сервера приложений вы используете, и, конечно, в какой среде вы работаете. Пример взят из procfile для разработки. Идея бригадира состоит в том, чтобы иметь процесс, чтобы управлять ими всеми — так что выбирайте, как хотите, но выбирайте с умом. - person ernd enson; 22.01.2013
comment
Этот ответ не интегрируется с Passenger, как указано в вопросе. - person Edward Anderson; 26.06.2014
comment
Почему вы понизили ответ? В случае использования пассажира вы можете использовать следующую команду: web: touch tmp/restart.txt - person ernd enson; 28.06.2014