如何在 rails 服务器启动时自动启动浏览器?

How to automatically launch browser when rails server starts?

有没有一种方法可以在您 运行 rails server 时自动启动浏览器并将其指向 http://localhost:3000

其次确保这只发生在开发中?

我原以为 Launchy 可以解决问题,但我正在努力弄清楚该把它放在哪里。

我试过添加初始化程序config/initializers/launchy.rb

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

这会触发浏览器打开,创建一个新选项卡并按预期访问 http://localhost:3000,但是在服务器/应用程序完成启动之前 运行s,我得到一个 浏览器无法连接服务器错误。

如果我在浏览器中重新加载,我的应用程序运行良好,所以我相信这不是我的应用程序的问题,而是 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) 在应用程序加载并准备好接收请求后 运行s;和 b) 所以它只有 运行 在开发中,而不是在测试或生产中?

系统设置 OS X 10.11.3,Rails 4.2.5,ruby 2.2.1p85,puma 版本 2.15.3

run Rails.application 行之后将其放入 config.ru 中即可。到 returns 时,您的应用已准备就绪。要运行它只在development,勾选Rails.env.

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

这很简单,但我觉得将它放在您的应用程序中很脏。最好是一个启动服务器的小脚本,稍等片刻,然后启动浏览器。