Ruby on rails 为什么rails服务器在tcp上列出
我正在做一个项目,这是一个新项目的更新版本。使用vagrant加载虚拟环境和运行时Ruby on rails 为什么rails服务器在tcp上列出,ruby-on-rails,Ruby On Rails,我正在做一个项目,这是一个新项目的更新版本。使用vagrant加载虚拟环境和运行时 RAILS_ENV=development bundle exec rails s 返回以下内容: => Booting Puma => Rails 5.0.0.1 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options Puma
RAILS_ENV=development bundle exec rails s
返回以下内容:
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.3-p222), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
当我访问浏览器时,我尝试了localhost:3000和127.0.0.1:3000,但一直得到:
ERR_CONNECTION_REFUSED
在加载的另一个存储库上的该项目的早期版本上,可以通过这些URL访问该项目。此项目已更新为Rails 5,但不知道为什么它在侦听TCP而不是HTTP。有什么建议吗?正如已经建议的那样,请确保服务器已绑定到0.0.0.0,以便所有接口都可以访问它 您可以尝试:
RAILS_ENV=development bundle exec rails s -b 0.0.0.0
HTTP是一种运行在TCP之上的高级协议。TCP提供了一个可靠的低级连接,在数据包丢失等情况下自动处理重传。TCP不定义任何关于通过它发送的数据格式的内容。HTTP在此基础上工作,定义了一种标准化的数据格式,用于从HTTP服务器请求资源和向HTTP服务器发送资源。主机上的端口3000是否映射到vagrant VM上的端口3000?如果可能,提供任何流浪配置。此外,如果您向VM内的服务器发送请求,rails服务器进程必须绑定到
0.0.0
,而不是localhost
,否则它将不允许“远程”连接(从您的机器,它位于vagrant VM外部)。您可以使用rails s-b0.0.0.0
绑定到0.0.0
并允许外部连接。请注意,这将使rails服务器暴露于任何可以连接到它的连接。是否使用docker。如果使用docker,请导出端口3000