加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用bundler时,在gemspec中声明开发依赖项仍然有用吗?

发布时间:2020-12-17 02:23:16 所属栏目:百科 来源:网络整理
导读:我正在开发一个新的 Ruby Gem.我熟悉使用Bundler管理宝石: source "https://rubygems.org"gemspecgem 'rspec-rails' 我熟悉在gemspec文件中指定依赖项: Gem::Specification.new do |s| # ... s.add_dependency "rails","~ 4.1.5"end 生成的Gemfile提到我应
我正在开发一个新的 Ruby Gem.我熟悉使用Bundler管理宝石:

source "https://rubygems.org"

gemspec

gem 'rspec-rails'

我熟悉在gemspec文件中指定依赖项:

Gem::Specification.new do |s|
  # ...
  s.add_dependency "rails","~> 4.1.5"
end

生成的Gemfile提到我应该在我准备发布时将我的依赖声明从我的Gemfile移动到我的gemspec.

# Declare any dependencies that are still in development here instead of in
# your gemspec. These might include edge Rails or gems from your path or
# Git. Remember to move these dependencies to your gemspec before releasing
# your gem to rubygems.org.

我为什么要这样做?为什么我的gemspec会关心我在开发中使用的宝石? development_dependency的目的是什么,Bundler还没有为我做什么?

解决方法

为了最好地回答您的问题,我们首先应该解开Bundler和Rubygems的概念.我认为一个很好的解释可能是 found here.

我为什么要[将依赖项从Gemfile移动到.gemspec]?

Gemfile不仅可以指定依赖项,还可以指定where the dependencies come from.当您还在处理依赖项本身并需要指向Git仓库(或其他东西)时,这非常有用.

完成对这些依赖项的处理之后,Rubygem约定规定您将这些已发布的gems上的依赖项声明移动到.gemspec文件中.添加一行gemspec告诉Bundler从这个传统的Rubygems位置读取.如果您正在处理gem,并且您没有积极开发gem的依赖项,则应在.gemspec中声明所有依赖项.

为什么我的gemspec会关心我在开发中使用的宝石?

从the docs开始为add_development_dependency:

Development dependencies aren’t installed by default and aren’t activated when a gem is required.

这个Rspec的一个流行的例子.您通常应该将Rspec声明为自己的开发依赖项,但不要强迫其他人在获取您的gem时下载它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读