2016-09-27 7 views
0

Я использую Delayed Job в качестве серверной очереди для активной работы в моем приложении Rails 5, но я не знаю, как запустить работника на Ubuntu 14.04 после запуска. Должен ли я обернуть rails jobs:work в сценарий Bash? Как я могу запустить его автоматически? Или предпочтительнее использовать bin/delayed_job?Как запустить Delayed Job с Ubuntu?

Как начать работу с задержкой при загрузке?

ответ

1

На самом деле не имеет значения, на какой ОС вы находитесь (пока это не Windows: D).

Чтобы начать обработку команды:

bundle exec rake jobs:work 

перезапускать delayed_job команды:

RAILS_ENV=production script/delayed_job restart 

ЗАКАНЧИВАТЬ gems README для получения дополнительной информации.

EDIT

(в соответствии с комментарием)

Вы можете создать какой-Баш скрипт в доме пользователя start_delayed_jon.sh.

Что-то вдоль линий:

#!/bin/bash 
cd /path/to/your/project/directory/ 
RAILS_ENV=development bundle exec rake jobs:work 

и запустить его в /etc/rc.local:

su -s /bin/bash - deploy /path/to/your/project/directory/start_delayed_jon.sh 
+0

Да, вот как я запустить его на моей машине Dev, но, как я Ubuntu запускать его автоматически при загрузке сервера? – ilovebigmacs

+0

@ilovebigmacs смотри edit –

+1

PS. Я бы посоветовал 'Sidekiq' вместо DJ .. –

3

Используя Whenever Gem, вы можете настроить cronjob, который запускает его при перезагрузке. В файле schedule.rb:

every :reboot do 
rake 'start_delayed_jobs' 
end 

Затем в файле граблей:

desc 'Start delayed jobs' 
    task :start_delayed_jobs do 
    system("#(Rails.root}/bin/delayed_job start") 
    end 
end 
+0

Это работает, но быстро закрепите опечатку -> system ("# {Rails.root}/bin/delayed_job start") – Jay