Ruby 使用“bundle gem floob”时,为什么要创建与gem同名的目录?
我正在做我的第一颗宝石。我们假设它被称为Ruby 使用“bundle gem floob”时,为什么要创建与gem同名的目录?,ruby,rubygems,bundler,setup-project,directory-structure,Ruby,Rubygems,Bundler,Setup Project,Directory Structure,我正在做我的第一颗宝石。我们假设它被称为floob。例如:b 为什么bundle gem会为一个gem创建两个同名目录?例如:/floob/lib/floob/ 我是否将大部分代码放在/lib/floob/中(与version.rb文件一起) 使用gem名称创建的文件的用途是什么? 例如:/floob/lib/floob.rb 唯一运行的命令是bundle gem 我想澄清一下所有floob~之间的关系。之所以采用这种“两层”结构,是因为/floob/lib最终将是添加到Rubyrequire加
floob
。例如:b
为什么bundle gem
会为一个gem创建两个同名目录?例如:/floob/lib/floob/
我是否将大部分代码放在/lib/floob/
中(与version.rb
文件一起)
使用gem名称创建的文件的用途是什么?
例如:/floob/lib/floob.rb
唯一运行的命令是bundle gem
我想澄清一下所有floob
~之间的关系。之所以采用这种“两层”结构,是因为/floob/lib
最终将是添加到Rubyrequire
加载路径的文件夹
这样,如果将floob.rb
放入/floob/lib
中,则可以使用以下内容加载它:
require 'floob'
这还提供了将子组件(如version.rb
)放入/floob/lib/floob
中,从而在floob
命名空间下进行分离的机会。这意味着您现在可以执行以下操作:
require 'floob/version'
require 'floob/base'
require 'floob/core'
etc..
如果将/floob
直接添加到加载路径,则很难将代码与自述文件、gempec或其他资产(如图像、二进制blob、YAML设置文件或bin
存根)分开
现在,实际代码将保存在lib
下,其他所有内容都可以很好地放在/floob
下的文件夹中,而不会影响代码或加载路径功能
还请注意,在大多数情况下,您不应该将floob.rb
以外的任何内容放入/floob/lib
,因为否则您将污染全局加载路径命名空间。相反,所有其余的代码都应该放在/floob/lib/floob
中,然后将require
代码放在floob.rb
中以加载这些文件,如上文所述
通过这种方式,您可以保持加载路径干净,并且组件彼此之间可以很好地分离。bundle安装在何时何地创建此文件夹结构?请说得更具体些。你运行了什么命令?在哪里运行的?我在命令上弄错了它是bundle gem
。我已经相应地更新了帖子。