...in也是一种奇怪的一致方式。
我有几个带有load
属性的模型。当我弹出一个控制台会话或reload!
时,在任何load
调用上都会看到相同的ArgumentError
,直到我在任何具有load
属性的其他模型实例上调用anything 为止:
Work.new.load
# => ArgumentError: wrong number of arguments (0 for 1..2)
# from gems/activesupport-4.0.0/lib/active_support/dependencies.rb:220:in `load'
Butt.new.load
# => ArgumentError: wrong number of arguments (0 for 1..2)
# from gems/activesupport-4.0.0/lib/active_support/dependencies.rb:220:in `load'
Work.new.class # or even Work.new.nonexistant_method
# => Work
Work.new.load
# => nil
Butt.new.load
# => nil
我用这个荒谬的黑客解决了问题:
after_initialize :fix_load_nonsense
def fix_load_nonsense; end
发布于 2014-03-17 19:34:27
#load
是Ruby的核模块中的一种方法。因为Kernel
包含在类Object
中,所以#load
方法在每个#load
对象中都是可用的。覆盖它是潜在的危险,因此不应该使用#load
作为属性的名称。
我相信有关ArgumentError
的问题发生在干净的内存空间中,原因是开发控制台的自动加载行为。
https://stackoverflow.com/questions/19638520
复制相似问题