Rails: запуск нескольких скриптов Ruby на сервере

У меня есть сервер Rails, который на данный момент работает безупречно (Ruby Enterprise + Passenger + Apache).

Также следует запускать некоторые независимые скрипты ruby ​​(настройка серверов XML-RPC localhost) в фоновом режиме. Как лучше всего это сделать?

Заранее спасибо!


person SirLenz0rlot    schedule 18.07.2011    source источник
comment
Может быть, [этот] [1] вопрос будет вам полезен? [1]: stackoverflow.com/questions/388016/ РЕДАКТИРОВАТЬ: Хорошо, я понятия не имею, почему это было сделано как комментарий ...   -  person Smar    schedule 19.07.2011
comment
хорошо найдено :) спасибо .. попробую скворец   -  person SirLenz0rlot    schedule 19.07.2011


Ответы (3)


Рассмотрите возможность использования Foreman. Он позволяет вам указать фоновые процессы в простой текстовой форме Procfile и запускать их с помощью foreman start.

Если вы хотите запустить веб-сервер и фоновые сценарии с помощью одной команды, и у вас все в порядке с использованием автономного режима Passenger, ваш Procfile может выглядеть примерно так:

web:    passenger start
rpc:    ruby rpc_server.rb
worker: script/delayed_job
person duncank    schedule 18.07.2011
comment
- это действительно выглядит намного проще. У вас есть какие-нибудь указания на то, как выглядит procfile? Можно найти несколько очень простых примеров, но не то, как выглядит реальный синтаксис файла proc -... EDIT: нашел хорошую статью на devcenter.heroku.com/articles/procfile - person SirLenz0rlot; 19.07.2011

Я пробовал Starling / Workling и обнаружил, что их сложно настроить и продолжать работать по сравнению с delayed_job. В любом случае вам понадобится монитор процессов, например God или Monit, чтобы убедиться, что выбранное вами решение продолжает работать.

person Steve Ross    schedule 18.07.2011

Ссылка в комментариях на другой вопрос (от Smar, спасибо):

http://railscasts.com/episodes/127-rake-in-background

казалось, у меня все работает нормально. Мне не понадобился Форман или какой-либо другой инструмент.

Мне просто нужно было добавить это в Rakefile:

desc "Start some other jobs"
task :start_other_jobs do
    system "ruby job1.rb &"
    system "ruby job2.rb &"
end

(обратите внимание на амперсанд, чтобы он работал как фоновая задача)

а затем начните с

rake start_other_jobs

Легко, правда? : D

person SirLenz0rlot    schedule 19.07.2011