Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4.2 Server port forwarding on Vagrant does not work

I have a Vagrant VM with Rails installed with a sample app. The VM is configured to forward the port 3000 (of Rails Webrick server) to my host 3000 port.

config.vm.network "forwarded_port", guest: 3000, host: 3000

Everything is configured as seen in a lot of examples.

But, when I try to access http://localhost:3000 nothing happens. I've also tried to forward to other random ports like 8081, 25600, without success. Doing a curl request also does not get anything (just a Connection reset by the peer message), and a curl request inside VM works perfectly (as expected).

Both my PC and my VM runs Ubuntu 12.04. I'm using Ruby 2.2.0 and Rails 4.2.0.

An important point is that Apache works normally. I forwarded the port 80 to port 8080 and everything works. It seems that the problem is just with the Rails server, even if when I use other ports (rails server -p 4000, for example)

like image 982
Victor Leal Avatar asked Jan 06 '15 13:01

Victor Leal


3 Answers

Rails 4.2 now binds to 127.0.0.1 by default and not 0.0.0.0.

Start the server using bin/rails server -b 0.0.0.0 and that should sort it.

like image 193
Max Woolf Avatar answered Nov 20 '22 16:11

Max Woolf


To run on a specific port :

rails server -b 0.0.0.0 -p 8520
like image 10
errakeshpd Avatar answered Nov 20 '22 14:11

errakeshpd


Use:

rails s -b 0.0.0.0

or

Add to config/boot.rb:

require 'rails/commands/server'

module Rails
  class Server
    new_defaults = Module.new do
      def default_options        
        default_host = Rails.env == 'development' ? '0.0.0.0' : '127.0.0.1'
        super.merge( Host: default_host )
      end
    end

    # Note: Module#prepend requires Ruby 2.0 or later
    prepend new_defaults
  end
end

and work with rails s

like image 4
shilovk Avatar answered Nov 20 '22 14:11

shilovk