ruby – 使用bundler时,在gemspec中声明开发依赖项仍然有用吗?
我正在开发一个新的
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:
这个Rspec的一个流行的例子.您通常应该将Rspec声明为自己的开发依赖项,但不要强迫其他人在获取您的gem时下载它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |