Rubyでbinding.pryが正常に動作しない時の対処法

f:id:ihatov08:20160926144751j:plain

ローカル環境でpryのbinding.pryが効かない時の対処法です。

ブレークポイントを置いても正常に動作しない

paizaのスキルチェックを解いていた時にはまりました。rubyの処理をローカル環境でデバックしながらやろうとrequire 'pry'してbinding.pryでブレークポイントを置いたのですが、どこにブレークポイントを置いても、下記箇所で処理が止まってしまい、にっちもさっちもいきませんでした。

    12: def run(&block)
13:   # For performance, disable any tracers while in the console.
14:   # Unfortunately doesn't work in 1.9.2 because of
15:   # http://redmine.ruby-lang.org/issues/3921. Works fine in 1.8.7 and 1.9.3.
16:   stop unless RUBY_VERSION == '1.9.2'
17:
18:   return_value = nil
19:   command = catch(:breakout_nav) do      # Coordinates with PryNav::Commands
20:     return_value = yield
=> 21:     {}    # Nothing thrown == no navigational command
22:   end

解決方法

どうやらpry系のgemの依存関係でこう言った問題が生じるようです。

% gem list pry         [14:39:52]
*** LOCAL GEMS ***
pry (0.10.3, 0.10.1)
pry-byebug (3.1.0)
pry-doc (0.6.0)
pry-nav (0.2.4)
pry-rails (0.3.4)
pry-remote (0.1.8)
pry-stack_explorer (0.4.9.2)

自分の場合はgem pry-navが邪魔をしていました。
アンインストールします。

% gem uninstall pry-nav              [14:43:06]
Successfully uninstalled pry-nav-0.2.4
^_^  ~/Desktop
% gem list pry                       [14:45:42]
*** LOCAL GEMS ***
pry (0.10.3, 0.10.1)
pry-byebug (3.1.0)
pry-doc (0.6.0)
pry-rails (0.3.4)
pry-remote (0.1.8)
pry-stack_explorer (0.4.9.2)

これで治りました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です