Запустите необходимые дополнительные сервисы (resque, redis) с помощью команды `rails server` - PullRequest
3 голосов
/ 02 марта 2011

Мне бы хотелось, чтобы моя среда разработки для Rails автоматически запускала для меня redis и resque (и, возможно, в других проектах, mongod, mysql-server и т. Д.), В следующих случаях:

  • Когдазапуск сервера разработки rails server.

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

  • Rake rspec, rspec / spec, при запуске тестов.
  • При запуске rails console.

При завершении работы rails server запущенные дочерние службы должныбыть закрытым тоже.

Какое место для таких дополнительных сценариев запуска?

И как избежать их запуска в производство (где я запускаю все через службы /etc/init.d)?

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Многие из этих встроенных задач уже доступны как задачи с граблями.

Вы можете создать мастер-задачу с граблями, которая делает все это.

Например, с помощью resque вы получаете"rake resque: start" "rake resque: scheduler: start" и т. д.

Вы можете создать общую задачу "start", которая зависит от остальных.Точно так же задача «остановка» закрыла бы все.

Итак, вы бы сделали:

rake start # starts all associated processes
rake stop  # stops them all

Это также очень полезно для использования из Capistrano, когда вы в конечном итоге развертываете код где-тоостальное.Звонить на рейк-задачи очень легко из Капистрано.

1 голос
/ 02 марта 2011

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

Например, через год в ваш проект придет разработчик nez.Он может быть дезориентирован, если ваш сервер rails commande запустит такое же другое приложение в фоновом режиме.

По той же идее, если вы сделаете это, вам нужно сохранить свой код в вашей среде rails.Может быть немного сложнее.Поддерживать независимый скрипт может быть более полезным.

Вы можете добавить свой скрипт в директорию скриптов.Это будет хорошей практикой.Но не тогда, когда вы запускаете команду с руководством, которое этого не делает.

...