17

我正在通过 railstutorial.org 学习 Ruby on Rails 从第 1 章开始我已经设置好一切并且工作正常。但是,突然之间,我的下一个应用程序出现了问题。

我运行“rails 服务器”

=> Booting WEBrick
=> Rails 3.2.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-11-15 00:45:08] INFO  WEBrick 1.3.1
[2012-11-15 00:45:08] INFO  ruby 1.9.3 (2012-11-10) [x86_64-linux]
[2012-11-15 00:45:08] INFO  WEBrick::HTTPServer#start: pid=2752 port=3000

似乎工作正常,就像我以前的应用程序一样。

但是,我尝试在各种浏览器上连接到 localhost:3000 、 0.0.0.0:3000 、 127.0.0.1:3000 ,它们都无法建立与服务器的连接。

需要注意的一些事项:

- 不久前我能够连接到本地主机 - 似乎它突然停止工作了。

- 我的第一个应用程序运行良好,但现在它也不适用于我的第一个应用程序。

-我没有防火墙阻止端口,我的主机文件不是问题。

-我在 Ubuntu 12.10

我几乎总是通过搜索找到解决方案,但这次不是......所以我需要一些帮助。这非常令人沮丧,因为我觉得这是一个简单的问题,我花了太长时间被困在上面。

谢谢你。

4

9 回答 9

15

尝试在其他端口(例如 3001)中运行它:
rails server -p 3001
如果它工作得比上面的命令在 3000 上再次尝试。
我认为其他一些软件正在使用您的 3000 端口,这就是它没有响应的原因。
或者对于一些高级的东西看这里

于 2012-11-15T10:03:20.407 回答
15

对于 rails 4.2.0,服务器localhost默认绑定到,而不是0.0.0.0. 在虚拟盒子中使用rails时,从主机访问服务器,绑定地址需要为0.0.0.0

启动 rails server-b0.0.0.0以使 rails 服务器可从主机/浏览器访问。

http://guides.rubyonrails.org/4_2_release_notes.html#default-host-for-rails-server https://github.com/samuelkadolph/unicorn-rails/issues/12#issuecomment-60875268

于 2015-11-09T22:44:38.220 回答
8

确保rake db:create在启动 rails 之前运行。

于 2013-11-23T18:18:40.270 回答
5

我正在使用 rails 5.0.0.beta3 并且遇到了这个问题。@andrewleung 的回答对我帮助很大。

我的电脑上好像 Rails 默认绑定地址搞砸了(macOS 10.11.6);在其他一些上,它工作正常。

简单的解决方案就是使用rails server -b 127.0.0.1. 然后,您可以访问您的localhost:3000.

我的猜测是(从https://serverfault.com/a/544188提示)localhost绑定在我的计算机上搞砸了,而127.0.0.1更具体。

于 2016-09-06T09:17:45.647 回答
1

我有同样的问题,我意识到它在必须更改为的config/environment/production.rb文件中config.assets.compile = falseconfig.assets.compile = true

然而,这可能会导致一些 javascript 和 sass 元素无法正常工作

于 2019-03-31T11:16:16.263 回答
0

对我来说......我在工作的代理人背后,不得不做rails s -b 0.0.0.0 -p 3000

于 2020-02-17T20:56:08.480 回答
0

原来我遇到的问题是我的虚拟机已经用完了硬盘空间,甚至没有足够的空间来创建 server.pid 文件。但由于某种原因,它并没有为此引发错误,因为正在创建文件,但被留空。

于 2017-05-07T22:02:55.370 回答
0

我遇到了同样的问题。事实证明,浏览器同步也在 localhost:3000 上运行。

由于一些 Rails 开发人员会使用浏览器同步来快速测试前端脚本,我认为这可能是使用端口 3000 的一个普遍原因。

于 2017-06-07T05:01:01.807 回答
0

检查您的 /etc/hosts 文件..是 ip 0.0.0.0 或 localhost 指向其他地址。

于 2017-06-07T05:46:42.810 回答