0

...奇妙に一貫した方法でも。

load属性を持つモデルがいくつかあります。reload!コンソールセッションまたはユニバースを開くと、属性を持つ他のモデルインスタンスで何かを呼び出すまでArgumentError、どの呼び出しでも同じことが一貫して表示されます。loadload

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

#loadRuby のKernel Moduleのメソッドです。Kernelは class に含まれているためObject、この#loadメソッドはすべての Ruby オブジェクトで使用できます。上書きすると危険な可能性がある#loadため、属性の名前として使用しないでください。

ArgumentErrorクリーンなメモリ空間で発生する問題は、開発コンソールのオートロード動作によるものだと思います。

于 2014-03-17T19:34:27.513 に答える