我正在开发一个宝石,和我的Gemfile看起来像这样:
source :rubygems
gemspec
group :development, :test do
gem "pry"
gem "debugger"
gem "rake"
end
不过,我不希望人们必须安装pry
和debugger
运行测试时,但我也希望能够要求他们在我的测试(因为我运行前缀的测试bundle exec
,我不能让它他们在我的负荷路径,如果他们不是在Gemfile中)。 如何实现这一目标?
此外,当把我的gemspec用于开发,而当把它们在Gemfile中的宝石? 我真的不知道其中的差别。
您可以添加宝石到您的gemspec作为发展的依赖,就像这样:
Gem::Specification.new do |s|
# ...
s.add_development_dependency 'pry'
s.add_development_dependency 'debugger'
s.add_development_dependency 'rake'
end
在创业板的工作,而不是安装宝石本身时,这些才会安装。
正如@安德鲁-VIT说,你可以把它添加到您的宝石规格的要求,发展依赖
Gem::Specification.new do |spec|
#...
spec.add_development_dependency "pry"
spec.add_development_dependency "debugger"
#...
end
由于这将是一个发展的依赖,你不希望添加require 'pry'
到主宝石的应用程序,所以只需将其添加到您的spec_helper.rb
或任何你的测试设置文件。
require 'rspec'
require 'vcr'
require 'pry'
#...
然后,当你运行你的规范,你仍然可以添加您binding.pry
成沙箱的代码。 请确保您的规格推你的代码之前运行。 如果这样,它打破了,你会看到你在你的代码忘了一个断点。
我找到了解决办法。 我可以把它们组。
source :rubygems
gemspec
group :development, :test do
gem "rake"
end
gem "debugger", :group => :debugger
gem "pry", :group => :pry
通过这种方式,投稿人可以选择不安装它们:
bundle install --without debugger pry
对我来说,上述问题的答案的组合似乎工作。 我目前正与红宝石2.2.4,并添加此向.gempsec运行:
s.add_development_dependency 'pry-byebug'
s.add_development_dependency 'rake'
这对于我的spec_helper.rb
:
require 'pry'
不知道有没有什么帮助的人。