2016-02-13 183 views
2

當您運行rails server時,是否有自動啓動瀏覽器並將其指向http://localhost:3000的方法?如何在rails服務器啓動時自動啓動瀏覽器?

其次保證這只是發生在發展?

我本來以爲會Launchy都做的伎倆,但我在努力制定出在哪裏把它。

我試着增加一個初始化器config/initializers/launchy.rb

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

這觸發瀏覽器打開,創建一個新的標籤,並參觀http://localhost:3000如預期,但它運行之前的服務器/應用程序啓動完畢後,我得到一個無法連接到服務器在瀏覽器中的錯誤。

如果我在瀏覽器中重新加載,我的應用程序工作得很好,所以我相信這不是我的應用程序的問題,而是Launch.open調用的時間。

我嘗試將launchy.rb重命名爲z_launchy.rb,所以最後按docs加載,但仍然是同樣的問題。 Launchy在應用程序準備好之前觸發。

我也嘗試將代碼添加到config/puma.rb(我使用puma作爲我的服務器),到config/enviroments/developoment.rb,但總是出現同樣的問題。 Launchy.open命令很快就會被調用。

我應該在哪裏打電話Launchy.open("http://localhost:3000"),以確保:a)它運行的應用程序加載之後,並準備好接收請求;和b)它只能在開發中運行,而不是在測試或生產中運行?

系統設置OS X 10.11.3,Rails的4.2.5,紅寶石2.2.1p85,彪馬版本2.15.3

+0

[來自Rails doc](http://guides.rubyonrails.org/configuring.html#using-initializer-files):_你的應用程序的某些部分,__notably routing__,尚未設置在after_initialize塊called._ –

回答

3

付諸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? 

這很容易,但是讓我覺得骯髒讓我坐在你的應用程序中。最好是一個小腳本,啓動你的服務器,等待一會兒,然後啓動瀏覽器。

+0

'的 「http://本地主機:#{導軌:: Server.new.options [:端口]}」'尊重'-p 3001'等 –

+0

對我來說太早運行。 '運行Rails.application'立即返回;只有在config.ru完成後,才能進入「Puma以單一模式開始......」,這需要幾秒鐘的時間...... –

相關問題