Как автоматически запустить браузер при запуске сервера rails?

Есть ли способ автоматического запуска браузера и указания его на http://localhost:3000 когда ты бежишь rails server?

А во-вторых, обеспечение того, чтобы это происходило только в процессе разработки?

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

Я попытался добавить инициализатор config/initializers/launchy.rb

require 'launchy'
Launchy.open("http://localhost:3000")

И это вызывает браузер, чтобы открыть, создать новую вкладку и посетить http://localhost:3000 как и ожидалось, однако он запускается до завершения загрузки сервера / приложения, и в браузере появляется сообщение " Не удается подключиться к серверу".

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

Я пытался переименовать launchy.rb в z_launchy.rb так что он загружается последним в соответствии с документами, но все та же проблема. Launchy срабатывает до того, как приложение будет готово к нему.

Я также попытался добавить код config/puma.rb (Я использую Puma в качестве моего сервера), чтобы config/enviroments/developoment.rb но всегда одна и та же проблема. Launchy.open Команда скоро будет вызвана.

Куда мне звонить Launchy.open("http://localhost:3000") чтобы убедиться, что: а) он запускается после загрузки приложения и готов к приему запросов; и б) То есть он работает только в разработке, а не в тестировании или производстве?

Системная настройка OS X 10.11.3, Rails 4.2.5, ruby ​​2.2.1p85, версия puma 2.15.3

1 ответ

Решение

Положить его в config.ru будет работать, после run Rails.application линия. К тому времени, когда вернется, ваше приложение готово к работе. Запускать его только в development, проверить Rails.env,

require ::File.expand_path('../config/environment', __FILE__)
run Rails.application
Launchy.open("http://localhost:3000") if Rails.env.development?

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

Другие вопросы по тегам