【问题标题】:NoMethodError: undefined method << for nil:NilClassNoMethodError:未定义的方法<<对于nil:NilClass
【发布时间】:2012-07-09 04:19:06
【问题描述】:

我正在学习 sinatra,但出现以下错误

Boot Error

Something went wrong while loading recall.rb
NoMethodError: undefined method `<<' for nil:NilClass

/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/rack-flash-0.1.2/lib/rack/flash.rb:11:in `use'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/bin/shotgun:128:in `block (2 levels) in <top (required)>'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:104:in `instance_eval'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:104:in `block in assemble_app'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:103:in `new'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:103:in `assemble_app'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:86:in `proceed_as_child'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:31:in `call!'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/loader.rb:18:in `call'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/favicon.rb:12:in `call'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/shotgun-0.9/lib/shotgun/static.rb:14:in `call'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:134:in `call'
/Users/nikhil/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service'
/Users/nikhil/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/Users/nikhil/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/Users/nikhil/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

我无法破译它,因为 id 没有指向我的任何源文件。

当我关注this part 的一个教程时出现了错误,他们在其中讨论了通知和错误消息。 我的应用程序的主文件包括以下 gem。

require "sinatra"
require "data_mapper"
require "rack-flash"
require "sinatra/redirect_with_flash"

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    您使用的是旧版本的 rack-flash,它不适用于您正在使用的机架版本。抛出错误的行在 rack-flash 内部,它试图改变一些已经改变的 Rack 内部状态。

    由于某种原因,该 gem 的最新版本被称为 rack-flash3,这就是为什么安装 rack-flash 仍然可以获得旧版本的 gem。

    【讨论】:

    • 我已经安装了rack-flash3 gem。我应该对源进行哪些更改?我应该改用rack-flash3 吗?
    • 需要新的 gem。不要认为您需要更改任何其他内容
    • 谢谢我已经解决了,require语句保持不变。
    • 我建议改用sinatra-flash
    • 在 Gemfile 中执行 gem 'rack-flash3',但仍然是 require 'rack-flash'
    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2015-02-22
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多