我有 ruby 文件,我在我的 mac 上运行 OSX 10.9,它是我都安装的 sinatra 和 geography 的组合。当我在文件上使用 require 'sinatra'
时,一切都很好,但是当我插入 require 'neography'
时,它在尝试运行文件时给了我这个错误。
/Users/AJ/.rvm/gems/ruby-2.1-head/gems/sinatra-1.4.4/lib/sinatra/base.rb:1488:in `start_server': undefined method `run' for HTTP:Module (NoMethodError)
from /Users/AJ/.rvm/gems/ruby-2.1-head/gems/sinatra-1.4.4/lib/sinatra/base.rb:1426:in `run!'
from /Users/AJ/.rvm/gems/ruby-2.1-head/gems/sinatra-1.4.4/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'
此错误的可能原因是什么?提前致谢
最佳答案
地理学 depends on httpclient ,这又是defines a module named HTTP
.
当 Sinatra 尝试确定使用哪个服务器时,它尝试的选项之一是 net-http-server ,其 Rack 处理程序类也被命名为 HTTP
。这会导致名称冲突,其中 Sinatra 认为 httpclient 中的 HTTP
模块是 net-http-server 并尝试这样运行它,从而导致您看到的错误。
如果您安装了另一台服务器,例如Thin , 它可能会在 HTTP
之前被检测到,所以你不会看到这个错误,但你可能会更好 explicitly setting the server to use .你可以添加类似的内容
set :server, thin
到您的应用程序文件以将 Thin 指定为您的服务器(您需要先安装 thin
gem——您也可以使用 Webrick)。如果需要,您也可以在命令行上指定:ruby my_app.rb -s thin
,但我认为您最好将它添加到您的代码中以避免将来出现问题。
关于Ruby 服务器不会以 neography 开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465480/