刚刚跟踪代码的时候,恰好看到了 ActiveSupport::Autoload 里面的一个奇怪的地方,
github 地址https://github.com/rails/rails/blob/master/activesupport/lib/active_support/dependencies/autoload.rb 37 行
def autoload(const_name, path = @_at_path)
unless path
full = [name, @_under_path, const_name.to_s].compact.join("::")
path = Inflector.underscore(full)
end
if @_eager_autoload
@_autoloads[const_name] = path
end
super const_name, path
end
代码里的这行full = [name, @_under_path, const_name.to_s].compact.join("::")
中的这个 name 变量是那里来的?找半天也没发现个所以然。