0

......也以一种奇怪的一致方式。

我有几个具有load属性的模型。当我弹出一个控制台会话或reload!宇宙时,我ArgumentError在任何load调用中始终看到相同的内容,直到我在具有属性的任何其他模型实例上调用任何其他内容:load

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
4

1 回答 1

0

#load是 Ruby内核模块中的一种方法。由于Kernel包含在 classObject中,因此该#load方法在每个 Ruby 对象中都可用。覆盖它有潜在的危险,因此#load不应用作属性的名称。

我相信关于ArgumentError干净内存空间中发生的问题是由于开发控制台的自动加载行为。

于 2014-03-17T19:34:27.513 回答