2014-12-30 2 views
1

У меня есть некоторые конфигурации код внутри Конфигурировать сделать блок в config.ru, который гласит следующее:Указать сервер приложений для запуска Руфус-планировщик с Синатрой

scheduler = Rufus::Scheduler.new 
scheduler.every '1h' do 
    # Run a cleanup job which should take place every hour 
    ... 
end 

При развертывании нашего Синатра приложения на engineyard, по по умолчанию потоки rufus-scheduler порождаются в главном приложении, хотя мы хотели бы, чтобы они были созданы на одном из других серверов приложений внутри машинного двора. Есть ли хороший способ сделать это без наличия условного блока внутри before_restart.rb? Документация, похоже, не идет на это.

развернуть/before_restart.rb:

if node[:name] == "app_instance_1" 
    scheduler.every '1h' do 
    # Run cleanup job 
    end 

конца

scheduler.every блок, возможно, придется быть инкапсулировано внутри задачи рек. Любой ввод оценивается. Благодарю.

ответ

0

Имейте отдельное мини-приложение, которое выполняет планирование, удаляет планирование из основного приложения.

ИЛИ

Проверьте имя хоста в вашем config.ru:

Kernel.load('deploy/scheduling.rb') if node[:name] == "app_instance_1" 

и удалить условную из Deploy/before_restart.rb

ИЛИ

так много способов кожи кошка ...

Примечание:

Документация, похоже, не входит в это.

Это потому, что это так зависит от контекста.

+0

К сожалению, переменная 'node' недоступна в config.ru. И попытка определить имя хоста не работает либо потому, что имя DNS внутреннего DNS может измениться. Мини-приложение может работать, может добавить его в monit и настроить для запуска в приложении. это просто кажется излишним. Я попробую пойти по маршруту мини-приложений и повысить, если это сработает, спасибо за ваше время :) –

+0

Хорошо, вы не упомянули об этом в своем вопросе. У вас действительно нет способа сообщить конкретное развертывание для запуска или не запускать планировщик? Может быть какой-то пустой файл, чье простое присутствие указывает, что планировщик должен быть инициализирован и «заселен», или наоборот, файл, который сообщает приложению, что он не инициализирует/не запускает планировщик ... С небольшим воображением и двумя шагами назад чтобы получить более широкую картину, это не должно быть слишком сложно. – jmettraux

Смежные вопросы