Как узнать, когда приложение Rails активируется при миграции? - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь создать миграцию для своего приложения, и в этом приложении я использую гем, который пытается запустить другую службу при запуске приложения.По-видимому, создание миграции ...

rails generate migration AddSomeStuffToTable stuff:string

... активирует приложение и этот драгоценный камень, который пытается подключиться к запуску службы.Похоже, что запуск приложения через генерацию миграции делает запуск службы невозможным для подключения, поэтому он просто продолжает спать и пытается снова, фактически никогда не запуская миграцию.

В этом геме я уже имел дело сэто для граблей, так что это то, что я до сих пор получил:

MyService.start unless defined? Rake or defined? IRB

Это решает проблему с рейком (например, rake db: migrate, rake db: populate), но как я могу обработать созданиемиграция, которая (насколько я знаю) не является задачей Rake?

1 Ответ

0 голосов
/ 08 марта 2012

Вы можете попробовать использовать переменные окружения для отключения службы:

MyService.start unless ENV['NO_SERVICE']

И выполнить свою команду следующим образом:

NO_SERVICE=1 rails generate migration AddSomeStuffToTable stuff:string

Однако я сомневаюсь, что это хорошо масштабируется, особенно если несколькоразработчики в приложении.Лучшим подходом может быть сделать обратное, запускать службу только в том случае, если присутствует конкретная переменная env .Однако в этом направлении вам нужно убедиться, что ваши серверы приложений установили эту переменную, например:

Apache: SetEnv START_SERVICE 1

nginx: env START_SERVICE=1

тонкий: START_SERVICE=1 thin start

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...