如何在gemspec文件中为依赖的gem指定路径?[英] how to specify path for dependent gem in gemspec file?

本文是小编为大家收集整理的关于如何在gemspec文件中为依赖的gem指定路径?的处理方法,想解了如何在gemspec文件中为依赖的gem指定路径?的问题怎么解决?如何在gemspec文件中为依赖的gem指定路径?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我创建了一个 gem(X),但它没有发布.现在我正在创建另一个 gem,它将 gem X 添加为这样的依赖项:-

s.add_dependency "X"

在 gemspec 文件中.

由于 gem(X) 不在 ruby​​gem 或 git 或 ruby​​forge 上,bundle install 命令会抛出错误:

<块引用>

找不到宝石 X**

我认为指定 X 的路径可以解决问题,但是如何?

推荐答案

我想我明白了@bor1s 在 SO 帖子中关于 git 引用的指点.

gemspec 文件是关于发布 gem 的依赖项.您的 Gemfile 设置本地开发环境,通常通过调用 gemspec.

在你的情况下,你的 gemspec 应该有这个

s.add_dependency "X"

然后你的 Gemfile 看起来像这样(确保本地引用在 gemspec 调用之后):

source "http://www.rubygems.org"
gemspec
gem "X", :path => "/Users/vikram/source/X"
<小时>

引用 Yahuda Katz 关于 gemspec 和 Bundler 的 博客文章

<块引用>

如果您发现需要针对尚未发布的 gem 进行开发(例如,Rails 经常针对未发布的 Rack、Arel 或 Mail gem 进行开发),您可以在 Gemfile 中添加单独的行来告诉 bundler在哪里可以找到宝石.它仍将使用 .gemspec 中列出的依赖项进行依赖项解析,但它现在知道在 gem 开发期间在哪里找到依赖项.

source "http://www.rubygems.org"

gemspec

# if the .gemspec in this git repo doesn't match the version required by this
# gem's .gemspec, bundler will print an error
gem "rack", :git => "git://github.com/rack/rack.git"
<块引用>

您不希望在 .gemspec 中包含此信息,在开发中的 gem 也已发布后,该信息最终将发布到 Rubygems.同样,这使整个系统更具弹性,因为它不依赖于瞬态外部 URL.这些信息纯粹是用于在开发过程中设置完整环境的东西,这需要一定的精度.

本文地址:https://www.itbaoku.cn/post/786692.html