ruby-on-railsruby-on-rails-4.2

How to change the default binding ip of Rails 4.2 development server?


After upgrading our team's rails application to 4.2, as the release note mentioned, the default ip rails server binds to is changed to localhost from 0.0.0.0.

We develop with Vagrant, and want the development server to be accessible directly from browser on the host machine.

Instead of typing rails s -b 0.0.0.0 every time from now on, I wonder if there's any more elegant solution, so that we can still use sth as simple as rails s to start the server. Perhaps:

The real goal behind this is that I want the upgrade to be smooth among our team, avoiding the glitch that people will have to constantly restarting their rails server due to the missing -b 0.0.0.0 part.

I tried vagrant port forwarding, but still get Connection Refused when I visit localhost:3000 on the host machine. The two configuration lines I tried was:

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

Didn't find any relevant instructions in the official docs. Any help will be appreciated.


Solution

  • I'm having the same issue here and I found today a better solution. Just append this code to your config/boot.rb and it should work with 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: Its based on: this answer