首页 > 解决方案 > 为什么'bundler gem'将'rake'和'rspec'添加到Gemfile而不是.gemspec文件作为开发依赖项?

问题描述

我对 Ruby 世界不太熟悉。Java 构建工具通常对 jUnit 之类的东西使用测试范围。

我用命令初始化了一个新项目:bundle gem new_gem_from_bundler内容Gemfile

source "https://rubygems.org"

# Specify your gem's dependencies in new_gem_from_bundler.gemspec
gemspec

gem "rake", "~> 12.0"
gem "rspec", "~> 3.0"

为什么不:

group :development do
  gem "rspec", "~> 3.9.0"
  gem "rake", "~> 3.0"
end

另外,由于有一个.gemspec文件,我希望rakerspec像这样定义:

spec.add_development_dependency 'rake', '~> 12.0'
spec.add_development_dependency 'rspec', '~> 3.0'

为什么将它们声明为常规的“宝石”依赖项?

标签: rubyrubygemsbundlergemspecs

解决方案


Bundler 使用模板文件来创建新的 gem。您可以根据需要更改模板文件Gemfile.ttnewgem.gemspec.tt 。例如你可以使用这个Gemfile.tt

source "https://rubygems.org"

# Specify your gem's dependencies in <%= config[:name] %>.gemspec
gemspec

要查找模板文件的位置,您可以使用以下 shell 命令:

find $(dirname $(gem which -g bundler)) -name Gemfile.tt

推荐阅读