我试图构建一个本地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
会构建什么呢?它将使用什么标准来确定构建成功(例如,代码中的语法错误除外)?
答案 0 :(得分:0)
从属的gems作为远程依赖项安装,并且在安装gem时或在捆绑情况下(在安装rails的情况下)安装。您不能将其设为本地依赖,因为其他人无法访问它。因此,您提到
spec.add_dependency "activesupport", "~> 4.2.0"
.gemspec文件中的是正确的。
.gemspec:宝石建造信息存储在此处。这是一种标准格式,用于描述与gem打包在一起然后部署到rubygems.org的所有信息。
gem构建hola.gemspec
它只是用于构建,您需要运行gem install对其进行测试。