2012-03-07 3 views
1

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

rails generate migration AddSomeStuffToTable stuff:string 

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

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

MyService.start unless defined? Rake or defined? IRB 

Это обрабатывает проблему рейки (как грабли БД: мигрировать, грабли БД : populate), но как я могу обработать создание миграции, которая (насколько мне известно) не является задачей Rake?

+0

ли вы считаете создание файла миграции вручную? Или это чистое любопытство? :) –

+0

Ну, это была бы альтернатива, но мне действительно кажется, что я должен использовать генераторы рельсов. –

ответ

0

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

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

+0

Реверсивный подход, безусловно, похоже на то, чтобы идти в этом проекте. Спасибо за помощь! –

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