2015-05-06 4 views
0

У меня есть бригадир приложение с PROCFILE как этотForeman условный ход процессов

web: bundle exec rails s 
custom_process: bundle exec rake custom:process 
faking_custom_process: bundle exec rake custom:faking_process 

И я хочу, чтобы запустить custom_process или faking custom_process зависит от моих потребностей:

foreman start # run web & custom_process 
FAKING_PROCESS # run web & faking_custom_process 

Да, я знаю о способности бежать как то foreman start -c faking_custom_process=0, но это сложнее, чем я ожидаю, правда?

ответ

1

В мастерском нет возможности просто пропустить процесс. Я думаю, вам нужно будет расширить свой запуск, чтобы сделать что-то другое, если вы хотите запустить другие процессы. В противном случае вы просто говорите это, чтобы запустить нулевые копии faking_custom_process и ничего:

foreman start -m web=1,custom_process=1,faking_custom_process=0 

или для Подделки версии:

foreman start -m web=1,custom_process=0,faking_custom_process=1 

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


Альтернативой будет переключаться подделке или отключить с помощью переменной в среде (я не уверен, что это легче, но это альтернатива):

web: bundle exec rails d 
custom_process: PROCESS=$FAKING"process" && bundle exec rake custom:$PROCESS 

Нормальный foreman start будет просто пробег bundle exec rake custom:process.

Для притворяется эквивалента вы можете сделать:

export FAKING="faking_" 

, который будет означать, что с тех пор foreman start он будет вызывать bundle exec rake custom:faking_process вместо этого.

Вы можете вернуться к обычному процессу, очистив переменную FAKING с:

export FAKING= 

Конечно, можно инкапсулировать, что в сценарий оболочки тоже.

+0

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

+1

На этом драгоценном камне есть проблема (https://github.com/ddollar/foreman/issues)./466. Работа вокруг предполагает использование 'all = 1', поэтому ваш вызов будет« начинающим мастером -c all = 1, faking_custom_process = 0'. – Shadwell

+0

О, хорошо! Я думаю, что могу закрыть вопрос – asiniy

0

Вы можете использовать .profile для хранения параметров по умолчанию для foreman start:

concurrency: web=1,custom_process=1,faking_custom_process=0 

или с помощью ярлыка:

concurrency: all=1,faking_custom_process=0 

А затем переопределить параметр по умолчанию это, чтобы переключиться на поддельный процесс:

foreman start -c all=1,custom_process=0 

См.: http://ddollar.github.io/foreman/#DEFAULT-OPTIONS

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