Ruby 命名错误:未定义的方法<&书信电报;零级:零级

Ruby 命名错误:未定义的方法<&书信电报;零级:零级,ruby,sinatra,Ruby,Sinatra,我正在学习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/

我正在学习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'

您使用的是旧版本的rack flash,与您使用的rack版本不兼容。引发错误的线路在机架闪存内部,它试图改变一些机架内部状态,而这些状态后来发生了变化


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

我已经安装了
rack-flash3
gem。我应该对源代码进行哪些更改?我应该改用
rack-flash3
吗?需要新的gem。不要认为您需要更改任何其他内容,因为我已将其修复。require语句保持不变。我建议改用
sinatra flash
。在gem文件中,执行
gem'rack-flash3'
,但仍然
require'rack flash'
require "sinatra"
require "data_mapper"
require "rack-flash"
require "sinatra/redirect_with_flash"