【发布时间】:2016-09-17 13:27:28
【问题描述】:
我正在从事非 Rails Ruby 项目。项目结构如下:
--Root
-Base
-xyz_base.rb
-abc_base.rb
-Entities
-A
-base
-a_base.rb
-a.rb
-B
-b.rb
-C
-c.rb
-app.rb
在 app.rb 我有如下内容:
Dir['./**/'].each {|dir| $:.push dir}
Dir["./**/*.rb"].each {|rb| require rb}
所以,所有文件都包含在项目中 (abc_base.rb,a.rb,...)。
问题是,它不知道应该先需要哪个。例如,a_base.rb 需要在 a.rb 之前。但是,实际上,它首先需要a.rb,然后在a_base.rb 中我得到uninitialized constant Entities::A::Base (NameError) 或cannot load such file。
我研究了autoload、require_all gem。还有另一种解决方案是在每个文件中放入 require 只需要需要的文件。但是文件太多了。
有什么想法吗?
【问题讨论】:
-
这个
require项目的算法是什么?子目录内容应该在目录实际内容之前? -
看看Bundler。