And*_*rew 6 ruby rubygems bundler
我正在开发一个新的 Ruby Gem。我熟悉使用 Bundler 管理 gems:
source "https://rubygems.org"
gemspec
gem 'rspec-rails'
Run Code Online (Sandbox Code Playgroud)
我熟悉在 gemspec 文件中指定依赖项:
Gem::Specification.new do |s|
# ...
s.add_dependency "rails", "~> 4.1.5"
end
Run Code Online (Sandbox Code Playgroud)
生成的 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.
Run Code Online (Sandbox Code Playgroud)
我为什么要这样做?为什么我的 gemspec 应该关心我在开发中使用的 gems?什么用途development_dependency投放捆扎机已经不适合我吗?
小智 5
为了最好地回答您的问题,我们应该首先理清 Bundler 和 Rubygems 的概念。我认为可以在这里找到一个很好的解释。
Gemfile 不仅允许您指定依赖项,还允许您指定依赖项的来源。当您也在处理依赖项本身并且需要指向 Git 存储库(或其他东西)时,这很有用。
一旦完成对这些依赖项的处理,Rubygem 约定会要求您将这些已发布 gem 的依赖项声明移动到您的 .gemspec 文件中。添加一行gemspec告诉 Bundler 从这个传统的 Rubygems 位置读取。如果您正在开发 gem,并且您没有积极开发 gem 的依赖项,那么所有依赖项都应在您的 .gemspec 中声明
从文档中add_development_dependency:
默认情况下不会安装开发依赖项,也不会在需要 gem 时激活。
此 Rspec 的一个流行示例。您通常应该将 Rspec 声明为您自己的开发依赖项,但不要强迫其他人在抢到您的 gem 时下载它。
| 归档时间: |
|
| 查看次数: |
1072 次 |
| 最近记录: |