【问题标题】:Upgraded Rails app to Ruby 1.9.2 - class DateTime needs to have method `_load'将 Rails 应用程序升级到 Ruby 1.9.2 - 类 DateTime 需要有方法 `_load'
【发布时间】:2012-02-22 01:46:16
【问题描述】:

自从我将应用升级到 ruby​​ 1.9.2 后,我收到以下错误:

我正在运行 ruby​​ -v ruby 1.9.2p290(2011-07-09 修订版 32553)[x86_64-darwin11.2.0]

TypeError (class DateTime needs to have method `_load'):
  activesupport (3.2.1) lib/active_support/message_verifier.rb:45:in `load'
  activesupport (3.2.1) lib/active_support/message_verifier.rb:45:in `verify'
  actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:288:in `[]'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/cookie_store.rb:53:in `block in unpacked_cookie_data'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/abstract_store.rb:55:in `stale_session_check!'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/cookie_store.rb:51:in `unpacked_cookie_data'
  rack (1.4.1) lib/rack/session/cookie.rb:98:in `extract_session_id'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/abstract_store.rb:51:in `block in extract_session_id'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/abstract_store.rb:55:in `stale_session_check!'
  actionpack (3.2.1) lib/action_dispatch/middleware/session/abstract_store.rb:51:in `extract_session_id'
  rack (1.4.1) lib/rack/session/abstract/id.rb:43:in `load_session_id!'
  rack (1.4.1) lib/rack/session/abstract/id.rb:32:in `[]'
  rack (1.4.1) lib/rack/session/abstract/id.rb:262:in `current_session_id'
  rack (1.4.1) lib/rack/session/abstract/id.rb:268:in `session_exists?'
  rack (1.4.1) lib/rack/session/abstract/id.rb:107:in `exists?'
  rack (1.4.1) lib/rack/session/abstract/id.rb:122:in `load_for_read!'
  rack (1.4.1) lib/rack/session/abstract/id.rb:64:in `has_key?'
  actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:258:in `ensure in call'
  actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:259: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.1) lib/action_dispatch/middleware/cookies.rb:338:in `call'
  activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call'
  activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
  activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__3195440498508246587__call__1658952344890015472__callbacks'
  activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
  activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.1) 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'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.2.1) lib/rails/engine.rb:479:in `call'
  railties (3.2.1) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /Users/guillaumenm/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
  /Users/guillaumenm/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
  /Users/guillaumenm/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

我创建了一个新的 rails 应用程序,启动它没有问题。我之前没有任何问题。

这是我的 gem 文件。非常欢迎任何帮助。

谢谢

source :gemcutter

gem 'oauth2'
gem 'faraday'
gem "koala", "~> 1.2.0beta"
gem 'json'
gem "rails", "3.2.1"
gem "sqlite3-ruby", :require => "sqlite3" 
gem 'songkickr'
gem 'httparty'
gem "squeel" , "~> 0.9.5" 
group :development do
  gem 'dalli'  #To use memcached
  gem 'newrelic_rpm'
  gem 'rails-web-console', :require => 'console'
  gem 'heroku'
end

gem 'event-calendar', :require => 'event_calendar'
gem 'delayed_job', '2.1.4'
gem 'icalendar'
gem 'acts_as_tree'
gem 'active_scaffold'
gem 'prototype-rails' 
gem 'prototype_legacy_helper', '0.0.0'  , :git => 'git://github.com/rails/prototype_legacy_helper.git'
gem "state_machine"

刚刚将我的应用程序降级到我以前的工作 Rails 3.1.2,没有更多成功。与 ruby​​ 1.9.2 升级相关。

【问题讨论】:

    标签: ruby ruby-on-rails-3 activesupport


    【解决方案1】:

    在stackoverflow上找到答案:

    Local server error after upgrading ruby from 1.8.7 to 1.9.2 (with Rails 3.1.1)

    清除您的 cookie:您的应用将会话(这是一个编组的 ruby​​ 对象)存储在一个 cookie 中。如果我没记错的话,他的编组格式在 1.8 和 1.9 之间发生了变化,因此您的应用程序无法再加载旧会话

    我的应用程序可能不是生产应用程序,或者我可能有很多用户遇到这些错误...

    【讨论】:

      【解决方案2】:

      在更新生产应用程序时,我能够通过清除所有会话来解决此问题:

      从会话中删除;

      (从数据库使用 SQL ——因此用户不必清除他们的 cookie)

      【讨论】:

        【解决方案3】:

        最近发生了类似的事情。经过一些调试(甚至调试 ruby​​ 代码以确认),我的结论是 plist4r gem 正在修改 String 类,使其成为用户可序列化()。更新后,当我们删除 plist4r 的依赖项时,String 实例恢复为系统可反序列化。但是序列化的流仍然需要 String 实例是用户可反序列化的,因此会出现错误。

        对我来说是 plist4r 和 String 类 https://github.com/dreamcat4/plist4r/blob/master/lib/plist4r/backend/ruby_cocoa.rb 的情况

        可能还有其他一些情况。

        我们的解决方案是使所有会话(数据/cookies)无效,从而无需反序列化这些流。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-07
          • 2011-11-11
          • 2011-09-02
          • 1970-01-01
          相关资源
          最近更新 更多