我试图构建一个本地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安装来测试它。