在模块内部需要文件?

时间:2012-07-25 03:06:59

标签: ruby

我在某人的存储库中看到了以下源代码:

module Twitter
  module Bootstrap
      module Rails
        require 'twitter/bootstrap/rails/engine' if defined?(Rails)
      end
   end
end

require 'less-rails'
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)

Source

我想知道将require放入模块时会有什么不同?

1 个答案:

答案 0 :(得分:12)

require而言,没有区别,即require总是将文件加载到全局命名空间。

应该注意的是,在这种情况下,内部require始终运行,因为此时Rails指的是它所在的模块,所以if语句总会评估为真。

这意味着代码相当于可能不那么混乱:

module Twitter
  module Bootstrap
    module Rails
    end
  end
end

require 'twitter/bootstrap/rails/engine'
require 'less-rails'
require 'twitter/bootstrap/rails/bootstrap' if defined?(Rails)