2

我有 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>'

此错误的可能原因是什么?提前致谢

4

1 回答 1

0

Neoography依赖于 httpclient,后者又定义了一个名为HTTP.

当 Sinatra 尝试确定使用哪个服务器时,它尝试的选项之一是net-http-server,其 Rack 处理程序类也被命名为HTTP。这会导致名称冲突,其中 Sinatra 认为HTTPhttpclient 中的模块是 net-http-server 并尝试这样运行它,从而导致您看到的错误。

如果您安装了另一台服务器,例如Thin,它可能会在之前被检测到,HTTP因此您不会看到此错误,但您最好明确设置服务器使用。您可以添加类似

set :server, thin

到您的应用程序文件以将 Thin 指定为您的服务器(您需要先安装thingem - 您也可以使用 Webrick)。如果你愿意,你也可以在命令行上指定它:ruby my_app.rb -s thin,但我认为你最好将它添加到你的代码中以避免将来出现问题。

于 2014-02-01T17:06:06.777 回答