当使用`束宝石floob`,为什么是同名的目录中创建的宝石?(When using `bundle

2019-11-04 18:10发布

我想提出我的第一个宝石。 让我们假设它被称为floob 。 例如: bundle gem floob

为什么会bundle gem的宝石创建同名的两个目录? 例如: /floob/lib/floob/

难道我把大部分的我的代码/lib/floob/ (旁边的version.rb文件?)

什么是创业板的名称创建该文件的目的是什么? 例如: /floob/lib/floob.rb

唯一运行的命令是bundle gem

我喜欢一点点澄清的关系是所有的之间有什么floobs

Answer 1:

这样做的原因“两层”结构是因为/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?