在将我们团队的rails应用程序升级到4.2之后,如release note所述,默认的ip rails server绑定从0.0.0.0更改为localhost.

我们使用Vagrant进行开发,希望开发服务器可以直接从主机上的浏览器访问.

从现在起,我不知道是否还有更优雅的解决方案,可以用rails s这样简单的东西来启动服务器,而不是每次都输入rails s -b 0.0.0.0.也许:

  • 配置文件rails s读取我可以修改默认绑定ip的位置(不使用-c)
  • 使用vagrant向前端口(try 但失败,请参阅下面遇到的问题)
  • monkey patch to rack,用于更改默认绑定ip

这背后的真正目标是,我希望我们的团队能够顺利升级,避免由于缺少-b 0.0.0.0个部件而导致人们不得不不断重新启动rails服务器的故障.

我try 了流浪端口转发,但在主机上访问localhost:3000时仍然得到Connection Refused.我try 的两种配置行是:

config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 3000, guest_ip: '127.0.0.1', host: 3000

在官方文件中没有找到任何相关说明.任何帮助都将不胜感激.

推荐答案

我在这里遇到了同样的问题,今天我找到了一个更好的解决方案.只需将此代码附加到配置/启动中.rb和它应该和 vagrant 一起工作.

require 'rails/commands/server'
module Rails
  class Server
    def default_options
      super.merge(Host:  '0.0.0.0', Port: 3000)
    end
  end
end

ps:基于:this answer

Ruby-on-rails相关问答推荐

rails中Net::STP的多文件模式

链轮轨道V4链接到外部Ruby 的 list 文件

删除链接不起作用,重定向 echo 示 Ruby

我需要在我的 Rails 7 应用程序中保留 app/assets/config/manifest.js 吗?

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

Rails 7 共享刺激控制器功能

跳过模型中的某些验证方法

如何让 Rspec 运行嵌套在文件夹下的所有测试?

什么是Ruby 用于 BESIDES 轨道?

Rails:在 lib 目录中记录代码?

如何找出现有 Rails 应用程序基于哪个 Rails 版本?

带有 master.key 的 Rails 5.2 - Heroku 部署

Rails,设计认证,CSRF 问题

登录delay_job?

在rails中带有内部文本或html的link_to image_tag

在 Rails 中命名布尔列

如何翻译 ActiveRecord 模型类名称?

何时(如果)合并 ActiveRecord 迁移?

如何为 Rails 控制器添加延迟以进行测试?

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列