当尚未安装依赖项gem时,为什么gem build .gemspec成功?

时间:2018-07-10 04:23:14

标签: ruby rubygems bundler

我试图构建一个本地gem,但惊讶地发现即使没有安装依赖项gem,我仍然可以成功运行gem build .gemspec

例如,我的.gemspec声明了以下依赖关系,并且我确定它们尚未安装。但是gem build成功了,只有我运行gem install安装本地gem之后,这些gem才会被安装。

  spec.add_runtime_dependency "terminal-notifier-guard"
  spec.add_dependency "activesupport", "~> 4.2.0"

从c / c ++的背景来看,我发现这有点令人困惑。我知道ruby是解释性/动态(无论什么意思)语言,当我实际运行脚本时,该脚本将被解释。但是gem build .gemspec会构建什么呢?它将使用什么标准来确定构建成功(例如,代码中的语法错误除外)?

1 个答案:

答案 0 :(得分:0)

从属的gems作为远程依赖项安装,并且在安装gem时或在捆绑情况下(在安装rails的情况下)安装。您不能将其设为本地依赖,因为其他人无法访问它。因此,您提到

 spec.add_dependency "activesupport", "~> 4.2.0" 
.gemspec文件中的

是正确的。

.gemspec:宝石建造信息存储在此处。这是一种标准格式,用于描述与gem打包在一起然后部署到rubygems.org的所有信息。

  

gem构建hola.gemspec

它只是用于构建,您需要运行gem install对其进行测试。