ruby-on-rails – 自动创建类的包含模块

在Rails中,您可以在app / foo / bar.rb下创建模型,bar.rb包含:

class Foo::Bar
  def some_method
    puts "I work fine"
  end
end

如果您尝试在纯ruby应用程序中执行此操作,您将获得NameError:未初始化的常量Foo,除非您已经初始化了模块Foo.

Rails做了什么允许它在没有首先初始化其包含模块的情况下创建类?是否可以通过activesupport等方式导入此行为,还是我们自己实现?

最佳答案 Rails修改Class类以包含一个
const_missing方法,该方法在使用未定义的类时被调用.然后它加载东西来尝试加载请求的类.

ActiveSupport中的实现位于lib / active_support / dependencies.rb中.

点赞