4

将我的 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 时,我该怎么做才能通过测试?

4

2 回答 2

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
于 2013-06-12T21:51:13.163 回答
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/

这个对我有用。

于 2013-03-08T11:03:32.593 回答