У меня есть некоторые конфигурации код внутри Конфигурировать сделать блок в 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 блок, возможно, придется быть инкапсулировано внутри задачи рек. Любой ввод оценивается. Благодарю.
К сожалению, переменная 'node' недоступна в config.ru. И попытка определить имя хоста не работает либо потому, что имя DNS внутреннего DNS может измениться. Мини-приложение может работать, может добавить его в monit и настроить для запуска в приложении. это просто кажется излишним. Я попробую пойти по маршруту мини-приложений и повысить, если это сработает, спасибо за ваше время :) –
Хорошо, вы не упомянули об этом в своем вопросе. У вас действительно нет способа сообщить конкретное развертывание для запуска или не запускать планировщик? Может быть какой-то пустой файл, чье простое присутствие указывает, что планировщик должен быть инициализирован и «заселен», или наоборот, файл, который сообщает приложению, что он не инициализирует/не запускает планировщик ... С небольшим воображением и двумя шагами назад чтобы получить более широкую картину, это не должно быть слишком сложно. – jmettraux