2012-10-04 28 views
1

当我运行ruby filename.rb时,瘦Web服务器启动,但是当我尝试在localhost:4567上查看(Sinatra)应用程序时,出现此错误消息。谷歌搜索没有透露。有人知道我可以做些什么来克服这个问题吗?Thin error message

gems/eventmachine-0.12.10/lib/em/connection.rb:39:in `block in new': undefined method `associate_callback_target' for #<Thin::Connection:0x00000100fc7500> (NoMethodError) 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `instance_eval' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `new' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:1430:in `event_callback' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:815:in `block in eventable_read' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in `times' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in `eventable_read' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `block in crank_selectables' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `each' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `crank_selectables' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:324:in `block in run' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in `loop' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in `run' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:64:in `run_machine' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/thin-1.4.1/lib/thin/backends/base.rb:63:in `start' 
    from /Users/michaeljohnmitchell/.rvm/gems/[email protected]/gems/thin-1.4.1/lib/thin/server.rb:159:in `start' 
    from /Users/mm/.rvm/gems/[email protected]orial/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run' 
    from /Users/mm/.rvm/gems/[email protected]/gems/sinatra-1.3.3/lib/sinatra/base.rb:1350:in `run!' 
    from /Users/mm/.rvm/gems/[email protected]/gems/sinatra-1.3.3/lib/sinatra/main.rb:25:in `block in <module:Sinatra>' 

该代码来自克隆Ruby中的Internet应用程序。它的发生与它的每一个演示应用程序...

路线码

get '/' do haml :index end 

post '/' do 
    uri = URI::parse(params[:original]) 
    custom = params[:custom].empty? ? nil : params[:custom] 
    raise "Invalid URL" unless uri.kind_of? URI::HTTP or uri.kind_of? URI::HTTPS 
    @link = Link.shorten(params[:original], custom) 
    haml :index 
end 

['/info/:short_url', '/info/:short_url/:num_of_days', '/info/:short_url/:num_of_days/:map'].each do |path| 
    get path do 
    @link = Link.first(:identifier => params[:short_url]) 
    raise 'This link is not defined yet' unless @link 
    @num_of_days = (params[:num_of_days] || 15).to_i 
    @count_days_bar = Visit.count_days_bar(params[:short_url], @num_of_days) 
    chart = Visit.count_country_chart(params[:short_url], params[:map] || 'world') 
    @count_country_map = chart[:map] 
    @count_country_bar = chart[:bar] 
    haml :info 
    end 
end 

get '/:short_url' do 
    link = Link.first(:identifier => params[:short_url]) 
    link.visits << Visit.create(:ip => get_remote_ip(env)) 
    link.save 
    redirect link.url.original, 301 
end 

error do haml :index end 

def get_remote_ip(env) 
    if addr = env['HTTP_X_FORWARDED_FOR'] 
    addr.split(',').first.strip 
    else 
    env['REMOTE_ADDR'] 
    end 
end 
+0

是什么路线代码看起来像? – Philip

+0

我用更多的代码更新了OP。 – Leahcim

+0

这是一个EventMachine问题; EventMachine [Aman Gupta](https://github.com/tmm1)的维护者建议在此[github issuecomment](https:// https://github.com/tmm1)上升级EventMachine gem(从您的情况下的0.12.10到1.0.0) github.com/eventmachine/eventmachine/issues/328#issuecomment-7567583)。值得一试。我试图用0.12.10版本重现错误,但不能作为宝石安装失败。使用EventMachine 1.0.0,我的一个应用程序可以正常工作。 –

回答

1

我的克隆互联网应用使用Ruby书的作者。我尝试在GitHub存储库中运行代码,并禁止一些更改(由于Sinatra的更改),我可以成功运行它。也许你可以尝试Prakash Murthy给出的答案,升级到EventMachine 1.0.0,但我运行的是与你一样的版本(0.12.10),并且不会给我任何问题。

如果你直接给我发一封电子邮件,我们可以弄清楚(稍后更新Stack Overflow)。

0

我有使用Ruby 1.9.2的这个问题。 Eventmachine的两个版本(0.12.10和1.0.x)引发了这个问题。在关联的Github问题中,我转向Ruby 2.1.1并重新捆绑;安装了Eventmachine 1.0.3,问题就消失了。

(这整个事情涉及到很多牦牛剃须对我来说,涉及更新我的Mac小牛,吹走了很多过时的库,并重新安装Xcode和自制软件 - 希望这是对别人简单)

相关问题