将我的Rails 3.2.12项目切换到Ruby 2.0.0无法通过测试

时间:2013-03-01 10:53:14

标签: ruby ruby-on-rails-3.2

将我的Rails 3.2.12项目切换到Ruby 2.0.0无法通过测试:

NoMethodError:
  private method `initialize_dup' called for #<Receipt:0x007fe06c809428>

看起来initialize_dup现在是私有方法。

使用Rails 3.2.12和Ruby 2.0.0时,如何才能通过测试?

2 个答案:

答案 0 :(得分:12)

对于那些因担心可能带来的问题而担心升级到3.2.13的人,我在初始化文件中添加了这个:

# Because of the Ruby 2.0 privatizes the method and  Rails 3.2.12's use of it
# , and because Rails 3.2.13 (which has a fix) also could potentially
# introduce other bugs, we're adding this patch to fix the issue.
#
# Remove this if the project contains Rails >= 3.2.13
module ActiveModel
  class Errors
    public :initialize_dup
  end

  module Validations
    public :initialize_dup
  end
end

class ActiveRecord::Base
  public :initialize_dup
end

答案 1 :(得分:2)

它已经发布请使用带有Rails 3.2.13.rc2的Ruby 2.0.0并修复了上述问题initialize_dup在此发布和更多修复中。

http://weblog.rubyonrails.org/2013/3/7/Rails-3-2-13-rc2-has-been-released/

它对我有用。