我想提出我的第一个宝石。 让我们假设它被称为floob
。 例如: bundle gem floob
为什么会bundle gem
的宝石创建同名的两个目录? 例如: /floob/lib/floob/
难道我把大部分的我的代码/lib/floob/
(旁边的version.rb
文件?)
什么是创业板的名称创建该文件的目的是什么? 例如: /floob/lib/floob.rb
唯一运行的命令是bundle gem
。
我喜欢一点点澄清的关系是所有的之间有什么floobs
〜
这样做的原因“两层”结构是因为/floob/lib
最终将被添加到了Ruby的文件夹require
负载路径。
这样,如果你把floob.rb
成/floob/lib
,你可以加载它:
require 'floob'
这也给了机会单独的子组件,如version.rb
,下floob
通过将它们放入命名空间/floob/lib/floob
。 这意味着你现在可以做这样的事情:
require 'floob/version'
require 'floob/base'
require 'floob/core'
etc..
如果/floob
直接加入到负载路径,那么这将是很难从之类的东西不同的代码README
文件,gemspecs,或其他资产如图像,二进制斑点,YAML设置文件或bin
存根。
现在实际的代码将生活在lib
,和其他一切可以很好地投入到直接下的文件夹/floob
,不与代码或负载路径的功能干扰。
另请注意,在大多数情况下,你不应该把任何东西比其他floob.rb
成/floob/lib
,因为否则你会被污染全局负载路径命名空间。 取而代之的是代码的所有其他应放入/floob/lib/floob
,然后你把require
的代码到floob.rb
加载这些文件,就像我上面描述。
这样你保持负载路径的洁净和组件很好地相互分离。
文章来源: When using `bundle gem floob`, why is a directory of the same name as the gem is created?