Ruby 精简错误消息

Ruby 精简错误消息,ruby,sinatra,thin,Ruby,Sinatra,Thin,当我运行ruby filename.rb时,瘦Web服务器启动,但当我尝试在localhost:4567上查看(Sinatra)应用程序时,我收到了此错误消息。谷歌搜索没有发现任何东西。有人知道我该怎么做才能渡过难关吗 gems/eventmachine-0.12.10/lib/em/connection.rb:39:in `block in new': undefined method `associate_callback_target' for #<Thin::Connection:

当我运行
ruby filename.rb
时,瘦Web服务器启动,但当我尝试在localhost:4567上查看(Sinatra)应用程序时,我收到了此错误消息。谷歌搜索没有发现任何东西。有人知道我该怎么做才能渡过难关吗

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/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `instance_eval'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `new'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/eventmachine.rb:1430:in `event_callback'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:815:in `block in eventable_read'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in `times'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in `eventable_read'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `block in crank_selectables'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `each'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in `crank_selectables'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:324:in `block in run'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in `loop'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in `run'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:64:in `run_machine'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/thin-1.4.1/lib/thin/backends/base.rb:63:in `start'
    from /Users/michaeljohnmitchell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/thin-1.4.1/lib/thin/server.rb:159:in `start'
    from /Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run'
    from /Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/sinatra-1.3.3/lib/sinatra/base.rb:1350:in `run!'
    from /Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/sinatra-1.3.3/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'
gems/eventmachine-0.12.10/lib/em/connection.rb:39:in'block in new':未定义的方法'associate_callback##(NoMethodError)
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in'instance_eval'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in'new'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/eventmachine.rb:1430:in'event_callback'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:815:in'block in eventable_read'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in'times'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:812:in'eventable_read'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in'block in crank_selectables'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in'each'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:369:in'crank_selectables'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:324:in'block in run'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in'loop'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:318:in'run'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb:64:in'run_machine'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in'run'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/thin-1.4.1/lib/thin/backends/base.rb:63:in'start'
来自/Users/michaeljohnmithell/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/thin-1.4.1/lib/thin/server.rb:159:in'start'
来自/Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in'run'
来自/Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/sinatra-1.3.3/lib/sinatra/base.rb:1350:in'run!'
来自/Users/mm/.rvm/gems/ruby-1.9.2-p290@rails3tutorial/gems/sinatra-1.3.3/lib/sinatra/main.rb:25:in'block in'
这段代码来自一本用Ruby克隆互联网应用程序的书。它的每一个演示应用程序都是如此

路线代码

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
get'/'do haml:索引结束
发布“/”do
uri=uri::parse(params[:original])
自定义=参数[:自定义]。空?无:参数[:自定义]
引发“无效URL”,除非uri.kind\u为?URI::HTTP还是URI?URI::HTTPS
@link=link.shorten(参数[:原始],自定义)
haml:索引
结束
['/info/:short_url'、'/info/:short_url/:num_of u days'、'/info/:short_url/:num_of u days/:map']。每个do路径|
走捷径
@link=link.first(:identifier=>params[:short\u url])
提升“此链接尚未定义”,除非@link
@num_of_days=(参数[:num_of_days]| 15)。至_i
@count_days_bar=访问。count_days_bar(参数[:short_url],@num_of_days)
chart=Visit.count_country_chart(params[:short_url],params[:map]| | world')
@计数\国家\地图=图表[:地图]
@计数\国家\条形图=图表[:条形图]
哈默:信息
结束
结束
获取“/:short_url”do
link=link.first(:identifier=>params[:short\u url])
link.visions获取远程ip(环境))
link.save
重定向link.url.original,301
结束
执行haml时出错:索引结束
def获取远程ip(环境)
如果addr=env['HTTP\u X\u FORWARDED\u']
地址拆分(“,”).first.strip
其他的
环境['REMOTE_ADDR']
结束
结束
我是《用Ruby克隆互联网应用程序》一书的作者。我尝试在GitHub存储库中运行代码,如果没有一些更改(由于Sinatra中的更改),我可以成功运行它。也许您可以尝试Prakash Murthy给出的答案,升级到EventMachine 1.0.0,但我运行的版本与您相同(0.12.10),这不会给我带来任何问题

如果您直接给我发电子邮件,我们可以解决这个问题(稍后更新堆栈溢出)。

我是《用Ruby克隆互联网应用程序》一书的作者。我尝试在GitHub存储库中运行代码,如果没有一些更改(由于Sinatra中的更改),我可以成功运行它。也许您可以尝试Prakash Murthy给出的答案,升级到EventMachine 1.0.0,但我运行的版本与您相同(0.12.10),这不会给我带来任何问题


如果您直接给我发电子邮件,我们可以解决这个问题(稍后更新堆栈溢出)。

我在使用Ruby 1.9.2时遇到了这个问题。Eventmachine的两个版本(0.12.10和1.0.x)都出现了此问题。根据链接Github问题的提示,我切换到Ruby 2.1.1并重新绑定;安装了Eventmachine 1.0.3后,问题就消失了


(这整件事对我来说涉及到很多琐碎的事情,包括将我的Mac升级到Mavericks,清除很多过时的库,重新安装Xcode和Homebrew——希望对其他人来说更简单。)

我在使用Ruby 1.9.2时遇到了这个问题。Eventmachine的两个版本(0.12.10和1.0.x)都出现了此问题。遵循链接中的提示