如何开发一个宝石时使用的“调​​试”和“撬”? (红宝石)(How to use 'de

2019-07-29 10:05发布

我正在开发一个宝石,和我的Gemfile看起来像这样:

source :rubygems

gemspec

group :development, :test do
  gem "pry"
  gem "debugger"
  gem "rake"
end

不过,我不希望人们必须安装prydebugger运行测试时,但我也希望能够要求他们在我的测试(因为我运行前缀的测试bundle exec ,我不能让它他们在我的负荷路径,如果他们不是在Gemfile中)。 如何实现这一目标?

此外,当把我的gemspec用于开发,而当把它们在Gemfile中的宝石? 我真的不知道其中的差别。

Answer 1:

您可以添加宝石到您的gemspec作为发展的依赖,就像这样:

Gem::Specification.new do |s|
  # ...
  s.add_development_dependency 'pry'
  s.add_development_dependency 'debugger'
  s.add_development_dependency 'rake'
end

在创业板的工作,而不是安装宝石本身时,这些才会安装。



Answer 2:

正如@安德鲁-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成沙箱的代码。 请确保您的规格推你的代码之前运行。 如果这样,它打破了,你会看到你在你的代码忘了一个断点。



Answer 3:

我找到了解决办法。 我可以把它们组。

source :rubygems

gemspec

group :development, :test do
  gem "rake"
end

gem "debugger", :group => :debugger
gem "pry",      :group => :pry

通过这种方式,投稿人可以选择不安装它们:

bundle install --without debugger pry


Answer 4:

对我来说,上述问题的答案的组合似乎工作。 我目前正与红宝石2.2.4,并添加此向.gempsec运行:

s.add_development_dependency 'pry-byebug'
s.add_development_dependency 'rake'

这对于我的spec_helper.rb

require 'pry'

不知道有没有什么帮助的人。



文章来源: How to use 'debugger' and 'pry' when developing a gem? (Ruby)