构建的 gemspec 文件(带版本)有什么用?
What is the built gemspec file (with version) for?
当我运行命令
$: gem build example_gem.gemspec
我得到一个名为 example_gem-0.0.0.gem 的文件。此文件中包含什么以及它的用途是什么?
此文件是否与 gem 如何包含在需要它们的 Ruby 代码中有关一旦安装了 gem 在机器上?
我注意到,当我进入我的 INSTALLATION_DIRECTORY 时,我可以在文件夹中看到 gems,其名称与此版本化 gem 文件的格式相匹配,但在目录,我只看到其他库代码,gemspec 文件等
这是否意味着它仅适用于 uploading/downloading/installing?
.gem
文件是 Gem。它包含 Gemspec(更准确地说,Gemspec 的对象图的 Marshal
序列化版本,而不是可执行文件 .gemspec
which 生成 该对象图)以及作为该 gem 一部分的所有文件的压缩存档(在 Gem 规范中列出)。它还包含一个加密安全校验和和一个可选的加密签名。
当您安装 .gem
时,RubyGems 检查加密校验和以确保 Gem 未被篡改,检查可选签名以确保确保 Gem 是由您认为的人创建的,请阅读 Gem 规范以了解如何处理 Gem,并将其解压缩到 $GEM_HOME
目录中。
Kernel#require
简单地遍历搜索路径,直到找到与您提供的名称匹配的文件,然后 运行该文件 。它对 Gems 一无所知。 (不过,它 知道如何 找到 解压缩的 Gem 目录。)
[注意:这有点简化。 Kernel#require
可能具有特定于实现的功能,例如,YARV 的 Kernel#require
也知道如何加载动态库(例如 .dll
s、.so
s、.dylib
s , 取决于 OS), JRuby 的 Kernel#require
也知道如何加载 .jar
s, 等等.]
当我运行命令
$: gem build example_gem.gemspec
我得到一个名为 example_gem-0.0.0.gem 的文件。此文件中包含什么以及它的用途是什么?
此文件是否与 gem 如何包含在需要它们的 Ruby 代码中有关一旦安装了 gem 在机器上?
我注意到,当我进入我的 INSTALLATION_DIRECTORY 时,我可以在文件夹中看到 gems,其名称与此版本化 gem 文件的格式相匹配,但在目录,我只看到其他库代码,gemspec 文件等
这是否意味着它仅适用于 uploading/downloading/installing?
.gem
文件是 Gem。它包含 Gemspec(更准确地说,Gemspec 的对象图的 Marshal
序列化版本,而不是可执行文件 .gemspec
which 生成 该对象图)以及作为该 gem 一部分的所有文件的压缩存档(在 Gem 规范中列出)。它还包含一个加密安全校验和和一个可选的加密签名。
当您安装 .gem
时,RubyGems 检查加密校验和以确保 Gem 未被篡改,检查可选签名以确保确保 Gem 是由您认为的人创建的,请阅读 Gem 规范以了解如何处理 Gem,并将其解压缩到 $GEM_HOME
目录中。
Kernel#require
简单地遍历搜索路径,直到找到与您提供的名称匹配的文件,然后 运行该文件 。它对 Gems 一无所知。 (不过,它 知道如何 找到 解压缩的 Gem 目录。)
[注意:这有点简化。 Kernel#require
可能具有特定于实现的功能,例如,YARV 的 Kernel#require
也知道如何加载动态库(例如 .dll
s、.so
s、.dylib
s , 取决于 OS), JRuby 的 Kernel#require
也知道如何加载 .jar
s, 等等.]