从 Rails 2 升级到 3:未定义的方法 use_standard_json_time_format

Upgrading from Rails 2 to 3: undefined method use_standard_json_time_format

我正在尝试将 Rails 从 2.3 升级到 3.1。我观看了 Railscast 的升级视频,但遇到了一些困难。

我遵循的步骤:

  1. 从稳定分支创建一个单独的 Rails 3 分支。
  2. 将 RVM 更新并重新加载到最新版本。
  3. gem install rails -v 3.0.20.
  4. rails upgrade checkrails upgrade backup 使用 Rails 升级插件。
  5. rails new . --skip-active-record

当我启动服务器时出现此错误:

initializers/new_rails_defaults.rb:13:in `<top (required)>': undefined method `use_standard_json_time_format=' for ActiveSupport:Module (NoMethodError)

有人可以帮忙吗?

use_standard_json_time_format 的默认值在 Rails 3.0.20 和 3.1.0 之间从 false 更改为 true,因此取决于您的目标版本(你的问题都提到了),你也许可以放弃配置。

如果您正在挑选 ActiveSupport 模块,请确保您需要 ActiveSupport::JSON::Encoding,它定义了方法。

require 'active_support'
require 'active_support/json/encoding'

而且由于 ActiveSupport.use_standard_json_time_format 只是委托给 ActiveSupport::JSON::Encoding,您也可以尝试直接在后者上调用它。

ActiveSupport::JSON::Encoding.use_standard_json_time_format = true