2015-10-20 72 views
1

我在本地机器(Ruby 2.x)和服务器(Ruby 1.8.x)上安装了sinatra gems。它在我的本地机器上运行良好,但在服务器上失败。如果有人遇到过这个问题,请帮我解决这个问题。Ruby Sinatra在const_get中抛出错误数量的参数(2代表1)

require 'rubygems' 
require 'sinatra' 

get '/' do 
    'Hello world!' 
end 

ruby --version 

ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] 

gem list 
rack (1.6.4) 
rack-protection (1.5.3) 
sinatra (1.4.6) 
tilt (2.0.1) 

异常

红宝石/ 1.8 /宝石/机架1.6.4/lib中/架/ handler.rb:22:从 \ const_get': wrong number of arguments (2 for 1) (ArgumentError) from \\..gem/ruby/1.8/gems/rack-1.6.4/lib/rack/handler.rb:22:in得到”。 .gem/ruby​​/1.8/gems/sinatra-1.4.6/lib/sinatra/base.rb:1777:在 detect_rack_handler' from \\..gem/ruby/1.8/gems/sinatra-1.4.6/lib/sinatra/base.rb:1775:in每个' from \ .. gem/ruby​​/1.8/gems/sinatra-1.4.6/lib /sinatra/base.rb:1775:in detect_rack_handler' from \\..gem/ruby/1.8/gems/sinatra-1.4.6/lib/sinatra/base.rb:1437:in ru N!” 从\ ..宝石/红宝石/ 1.8 /宝石/西纳特拉-1.4.6/lib目录/西纳特拉/ main.rb的:25

回答

3

的Ruby 1.8.7:

const_get(sym) => obj 

的Ruby 2.1.0 :

const_get(sym, inherit=true) → obj 

所以,即使Sinatra声称它支持ruby 1.8.7,Rack显然没有。您可以尝试将Rack降级到支持1.8.7的最新版本(我不知道这会是什么)。但是为什么在2015年你会使用1.8.7?

-2

对于红宝石1.8.7和sinatra 1.4.6。 更新Gemfile.lock更新机架版本。

rack(1.6.1) bundle install

相关问题