将我的 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 时,我该怎么做才能通过测试?
将我的 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 时,我该怎么做才能通过测试?
对于那些担心升级到 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
它已发布,请使用带有 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/
这个对我有用。