2014-01-30 27 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,但我認爲您最好將其添加到代碼中以避免將來出現問題。