我在/app/models 中的单个文件中有几个小类,类似于:
# /app/models/little_class.rb
class LittleClass; ...do stuff; end;
class AnotherLittleClass; ...do stuff; end;
Rails 似乎只适合在反射(reflect)类名的文件中自动加载类。因此,在文件外部引用 AnotherLittleClass 会引发“统一常量”错误,如下所示,直到引用 LittleClass:
irb(main):001:0> AnotherLittleClass
NameError: uninitialized constant AnotherLittleClass
irb(main):02:0> LittleClass
=> LittleClass
irb(main):03:0> AnotherLittleClass
=> LittleClass2
将它们分成单独的文件会很麻烦而且很麻烦。有没有办法自动加载这些类,因此在没有 LittleClass 的情况下引用 AnotherLittleClass 不会引发错误?
最佳答案
试试这个技巧:
1.9.2p312 :001 > AnotherLittleClass.new
# => NameError: uninitialized constant AnotherLittleClass
1.9.2p312 :002 > autoload :AnotherLittleClass, File.dirname(__FILE__) + "/app/models/little_class.rb"
# => nil
1.9.2p312 :003 > AnotherLittleClass.new
# => #<AnotherLittleClass:0xa687d24>
关于ruby-on-rails - 强制 Rails 自动加载类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10057802/