gem 作成中に binding.pry で undefined method `pry' for #<Binding:XXXXX> が出たとき対応すること ; Ruby

環境差異があるかもしれないが、事例として残す

前提

pry, pry-doc は gem に install されている

gem install pry pry-doc

状況

  1. gem モジュールを作成した
bundle gem sample
  1. gem の実装部を弄っていた
lib/sample.rb
lib/sample/*.rb
lib/sample.rb

module Sample
  def foo
    puts "hello"
  end
end
  1. 実装部で binding.pry を引っ掛けたが、NoMethodError が返ってくる
lib/sample.rb

module Sample
  def self.foo
    binding.pry
    puts "hello"
  end
end
bundle exec irb
> require "sample"
> Sample.run
undefined method `pry' for # 

対応

  • binding.pry を設置するファイルのグローバルスコープに require "pry" を置く
lib/sample.rb

require "pry"
module Sample
  def self.foo
    binding.pry
    puts "hello"
  end
end
  • *.gemspec に spec.add_dpendency を追加する
   spec.add_dependency 'pry'
   spec.add_dependency 'pry-nav'
   spec.add_dependency 'pry-doc'
  • bundle exec irb を実行するパスが gem のルートディレクトリであるかどうか確かめる(*.gemspec があるディレクトリ)
  • 早く寝る