为什么在依赖gem尚未安装的情况下,gembuild.gmspec会成功



我试图构建一个本地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会构建什么呢?它将使用什么标准来确定构建成功(例如,代码中的语法错误除外(?

依赖gem作为远程依赖安装,并且在安装gem时安装,或者在rails的情况下在bundle期间安装。您不能使它依赖于本地,因为其他人无法访问它。所以你提到

spec.add_dependency "activesupport", "~> 4.2.0" 

在.gmspec文件中是正确的。

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

gembuild hola.gemspec

它只是用来构建的,你需要运行gem安装来测试它。

相关内容

最新更新