After upgrading Rails to 4.2, you cannot access the development mode rails server from another computer/virtual machine (remote access) for testing. So, why can this happen and how to resolve it?
This is caused by a change in Rails 4.2, the rails s command no longer listens at 0.0.0.0 (means listen on all interfaces) by default, its default is now localhost instead. It means you can only use http://localhost:3000 or http://127.0.0.1:3000 to access rails server, http://192.168.1.123 will not work now.
You can see the difference between Rails 4.1 (and ealier) and 4.2 when starting Rails server:
In Rails 4.1 => Rails 4.1.9 application starting in development on http://localhost:3000 In Rails 4.2 => Rails 4.2.0 application starting in development on http://0.0.0.0:3000
If you need remote access, you can choose one of below methods:
Apply in each start
Start rails server by appending -b 0.0.0.0, so command to start rails server is: rails s -b 0.0.0.0
Change default binding option
Modify config/boot.rb by adding below code and start rails server with normal command rails s
require 'rubygems' require 'rails/commands/server' module Rails class Server alias :default_options_bk :default_options def default_options default_options_bk.merge!(Host: '0.0.0.0') end end end