我希望处理现有的 gem,我已经从 git 存储库中签出了它。我正在使用干净的 Ruby 安装。首先,我想安装 gemspec 文件中指定的依赖项,以便我可以构建和测试 gem。我没有为此使用捆绑器。
目前,我通过读取 gemspec 并调用“gem”来手动安装 gem。我想做的是这样的:
git clone my_gem
cd my_gem
gem magically-install-dependencies my_gem.gemspec
并安装所有运行时和开发依赖项,就像我从 .gem 文件安装它一样。有办法做到这一点吗?
我搜索了
gem
文档,除了 build
之外,似乎没有任何东西可以在 gemfiles 上工作。
Rubygems 本身采用了捆绑器,因此这两种工具之间的区别现在正在缩小。不过,您可以仅使用
gemspec
从 gem install
文件安装 gem。此命令支持可选的 -g
标志,您可以在其中指定 gem 依赖项 API 文件。 文档关于此标志的说明如下:
RubyGems 可以跨多个安装一组一致的 gem 当 gem 依赖文件时使用
的环境 (存在gem install -g
、gem.deps.rb
或Gemfile
。如果没有显式文件 鉴于 RubyGems 尝试在当前目录中查找一个。Isolate)
当
环境变量设置为gem时 依赖文件 该文件中的 gems 将在启动时激活 时间。将其设置为特定文件名或“-”以获取 RubyGems 通过从以下位置向上自动发现 gem 依赖文件 当前目录。RUBYGEMS_GEMDEPS
注意:在多用户系统上启用自动发现可能会导致 从外部目录使用时执行任意代码 控制。
现在,创建此类 gem 依赖项文件的最简单方法是在与 gemspec 文件相同的目录中创建一个简单的
Gemfile
,其中包含以下逐字内容:
source 'https://rubygems.org'
gemspec
此文件指示
gem install -g
(以及 bundle install
)从当前目录获取 gemspec
文件并使用其中指定的依赖项进行安装。
如果需要,您可以使用捆绑器。在这种情况下,如果您始终想安装可用的最新 gem 版本,则无需提交或保留
Gemfile.lock
。
这样,您就不会严格依赖捆绑器,但仍然可以使用它提供的自动设施。