如何通过gemspec文件安装Ruby gem依赖(不使用Bundler)
不借助Bundler,通过gemspec安装Ruby Gem依赖的方法
目前gem命令本身没有直接读取gemspec并一键安装所有依赖的内置功能,但可以通过Ruby脚本快速实现,无需手动解析gemspec内容:
- 进入gem项目目录后,执行以下命令安装运行时依赖:
ruby -e "require 'rubygems'; spec = Gem::Specification.load('my_gem.gemspec'); spec.dependencies.select { |d| d.type == :runtime }.each { |d| system 'gem install', d.name, '-v', d.requirement.to_s }"
- 如果需要同时安装开发依赖,使用这条命令:
ruby -e "require 'rubygems'; spec = Gem::Specification.load('my_gem.gemspec'); spec.dependencies.each { |d| system 'gem install', d.name, '-v', d.requirement.to_s }"
简化操作
如果不想每次输入长命令,可以给shell设置别名:
alias gem-install-spec='ruby -e "require '\''rubygems'\''; spec = Gem::Specification.load(ARGV[0]); spec.dependencies.each { |d| system '\''gem install'\'', d.name, '\''-v'\'', d.requirement.to_s }"'
之后只需执行以下命令就能一键安装所有依赖:
gem-install-spec my_gem.gemspec
原理说明
这个脚本通过Ruby内置的Gem::Specification类加载gemspec文件,直接提取其中定义的依赖项,再调用gem install命令逐个安装,逻辑和安装.gem文件时的依赖处理完全一致。
内容的提问来源于stack exchange,提问作者Chris Reuter
相关产品推荐
相关产品推荐

