为什么“bundler gem”将“rake”和“rspec”添加到 Gemfile 而不是 .gemspec 文件作为开发依赖项?

Kir*_*ill 5 ruby rubygems bundler gemspecs

我对 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"
Run Code Online (Sandbox Code Playgroud)

为什么不:

group :development do
  gem "rspec", "~> 3.9.0"
  gem "rake", "~> 3.0"
end
Run Code Online (Sandbox Code Playgroud)

另外,由于有一个.gemspec文件,我希望rake它的rspec定义如下:

spec.add_development_dependency 'rake', '~> 12.0'
spec.add_development_dependency 'rspec', '~> 3.0'
Run Code Online (Sandbox Code Playgroud)

为什么它们被声明为常规的“gem”依赖项?

ser*_*gio 1

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

source "https://rubygems.org"

# Specify your gem's dependencies in <%= config[:name] %>.gemspec
gemspec
Run Code Online (Sandbox Code Playgroud)

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

find $(dirname $(gem which -g bundler)) -name Gemfile.tt
Run Code Online (Sandbox Code Playgroud)

  • 很高兴知道。但仍然不清楚为什么“rspec”没有在测试或开发范围中声明。 (4认同)