【问题标题】:undefined method `include?' for nil:NilClass after upgrading from rails 3.1.3 to rails 3.2.2未定义的方法“包括?”从 rails 3.1.3 升级到 rails 3.2.2 后的 nil:NilClass
【发布时间】:2012-03-11 11:11:51
【问题描述】:

使用命令 rake rails:upgrade 将我的应用程序从 rails 3.1.3 升级到 rails 3.2.2 之后 输入 localhost:3000 时出现以下错误

undefined method `include?' for nil:NilClass

我的服务器日志说

NoMethodError (undefined method `include?' for nil:NilClass):
  oa-core (0.3.2) lib/omniauth/builder.rb:29:in `call'
  client_side_validations (3.1.4) lib/client_side_validations/middleware.rb:18:in `call'
  warden (1.1.1) lib/warden/manager.rb:35:in `block in call'
  warden (1.1.1) lib/warden/manager.rb:34:in `catch'
  warden (1.1.1) lib/warden/manager.rb:34:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  rack (1.4.1) lib/rack/etag.rb:23:in `call'
  rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/head.rb:14:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/flash.rb:242:in `call'
  rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
  rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/cookies.rb:338:in `call'
  activerecord (3.2.2) lib/active_record/query_cache.rb:64:in `call'
  activerecord (3.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
  activesupport (3.2.2) lib/active_support/callbacks.rb:405:in `_run__855497111__call__557125978__callbacks'
  activesupport (3.2.2) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.2) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
  activesupport (3.2.2) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.2) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:65:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.2) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.2) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.2) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/static.rb:61:in `call'
  railties (3.2.2) lib/rails/engine.rb:479:in `call'
  railties (3.2.2) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.2) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /home/rzaartz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  /home/rzaartz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  /home/rzaartz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'


  Rendered /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (5.2ms)
  Rendered /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (26.7ms)
  Rendered /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/actionpack-3.2.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (155.4ms)

我该如何解决这个问题。

我的宝石文件

source 'http://rubygems.org'

gem 'rails', '3.2.2'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'

gem 'mysql2'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer'

  gem 'uglifier', '>= 1.0.3'
  gem 'twitter-bootstrap-rails'
end

gem 'jquery-rails'
gem 'devise'
gem 'paperclip'
gem 'redcarpet'
gem 'make_flaggable', :git => 'git://github.com/cavneb/make_flaggable.git'
gem 'nokogiri'
gem 'gravtastic'
gem "impressiongram", "~> 0.0.5"
gem 'impressionist'
#gem 'sunspot_rails'
gem 'event-calendar', :require => 'event_calendar'
gem "oa-oauth", :require => "omniauth/oauth"
gem "omniauth"
gem "will_paginate", "~> 3.0.0"
gem "cancan"
gem "tabs_on_rails", "~> 2.0.2"
gem 'albino'
gem 'youtube_it'
gem 'rack-pjax'
#gem 'formtastic'
gem 'amistad'
gem 'jw_player_helper'
gem 'best_in_place'
gem 'roadie'
gem "googlecharts", :require => "gchart"
gem 'delayed_job'
gem 'delayed_paperclip'
gem 'ckeditor'
gem 'private_pub'



gem "devise_rpx_connectable", :git => 'git://github.com/TheEmpty/devise_rpx_connectable.git'





 gem 'capistrano'


group :development, :test do
  # Pretty printed test output
  gem 'turn', :require => false
  gem 'rspec-rails'
  gem 'capybara'
  gem 'launchy'
  gem "factory_girl_rails"
  gem "capybara"
  gem "database_cleaner"
  gem "guard"
  gem "guard-rspec"
  gem "fakeweb"
  gem "simplecov", :require => false
  #gem 'client_side_validations'
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


    【解决方案1】:

    问题是您使用的是过时版本的 OmniAuth (0.3.2)。升级到版本 1.x 来解决这个问题。见:https://github.com/intridea/omniauth

    请注意,从 0.3.2 到 1.x 有几个重大更改,因此请仔细阅读升级说明:https://github.com/intridea/omniauth/wiki/Upgrading-to-1.0

    更新:作为此升级过程的一部分,您应该从 Gemfile 中删除 oa-oauth 引用。

    更新 2:我关于仔细阅读升级说明的警告并没有随意抛出:这不是一个完全微不足道的升级,必须小心才能使其正常工作

    【讨论】:

    • @UchennaOkafor,你有错字吗?我不明白“但它很幸运”
    • 未初始化常量 OmniAuth::Configuration::Form (NameError)
    • 对不起,这是一个错字。我不走运。我刚刚更新了我的 gem 锁定文件,我收到以下错误 uninitialized constant OmniAuth::Configuration::Form (NameError)
    • @UchennaOkafor,你能更新你的问题并显示你的整个 Gemfile 吗?
    • @UchennaOkafor,删除此行:gem "oa-oauth", :require => "omniauth/oauth"。 oauth 在omniauth 1.x 中不再存在
    猜你喜欢
    • 2012-08-07
    • 2016-05-03
    • 2021-06-27
    • 2013-06-28
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2017-06-06
    相关资源
    最近更新 更多