2014-01-30 97 views
2

我有红宝石文件,即时通讯运行在我的Mac与OSX 10.9,这是我已经安装了sinatra和地理的组合。当我使用文件require 'sinatra'一切都很好,但是当我插入require 'neography'它试图运行该文件时给我这个错误。红宝石服务器不会启动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>' 

什么可能是此错误的可能原因?在此先感谢

回答

0

Neography depends on httpclient,而这又将defines a module named HTTP

当Sinatra试图确定要使用哪个服务器时,它尝试的其中一个选项是net-http-server,其机架处理程序类别也被命名为HTTP。这会导致名称冲突,Sinatra认为httpclient中的HTTP模块是net-http-server,并尝试运行它,导致出现错误。

如果您安装了其他服务器,例如Thin,它可能会在HTTP之前被检测到,所以你不会看到这个错误,但你可能更好explicitly setting the server to use。你可以像

set :server, thin 

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