我正在使用 Ubuntu (Lucid Lynx) 学习 Ruby On Rails。我在 VirtualBox 中运行 Ubuntu(主机是 Windows 7 Ultimate),使用桥接网络。
当我运行我的 Rails 应用程序并使用 localhost:3000 将浏览器指向它时,该应用程序会立即响应并且我的页面会在一两秒内呈现。
但是,如果我使用 10.0.0.5:3000 (其中 10.0.0.5 是我使用报告的 IP 地址ifconfig
),我的 rails 应用程序的响应是难以置信慢 – 服务器可能需要 30 秒或更长时间才能响应并呈现页面。
Firefox 和 Chrome 都会发生这种情况。此外,当我从主机访问 Rails 应用程序(在 IE 中测试它)时,我得到的响应同样很慢。
知道可能发生了什么吗?我尝试使用两个不同的路由器,并在两个不同的网络(工作和家庭)上进行操作,结果相同。
大家干杯!
答案1
尝试运行
sudo service avahi-daemon stop
还可以尝试设置 WEBrick /usr/lib/ruby//webrick/config.rb
:DoNotReverseLookup => true
答案2
这是 WEBrick 的问题,使用其他 Web 服务器时没有问题。
我尝试了 Mongrel 和 Thin 与 Ruby on Rails 3.0.x,两者都运行良好。
我建议使用 Mongrel - 只需将其添加到你的 Gemfile 中:
gem "mongrel"
或者您可以将其设置为仅用于开发和测试,而不会中断生产:
group :test, :development do
gem "mongrel"
end
现在以与之前相同的方式启动服务器,并启动 Mongrel 而不是 WEBrick。
如果您更喜欢 Thin,则需要使用 启动服务器thin start
或者 WEBrick 将启动。
答案3
我在 VirtualBox 和 VMware 下都遇到过同样的问题。不确定问题是什么... 它表现得好像 Rails 服务器正在查找某个必须超时的内容?Rails 服务器在日志中报告渲染时间很快,但响应每个请求需要很长时间。在一个特定的 Ubuntu 实例上(在 VirtualBox 和 VMware 下都试过)在 Rails 2.3.8 和 Rails 3.0.3 中都发生了这种情况。我在另一个机器上安装了另一个 Ubuntu VM,没有出现这个问题...
经过一段时间的沮丧追求后,我的解决方案是在开发模式下使用 Phusion Passenger 和 Apache。
答案4
这个真的很奇怪。我发现,如果我从 putty 启动 rails 服务器,响应速度会比从 VirtualBox 窗口启动时快得多……