地方でリモートワーク in Iwate

東京の受託開発会社でリモートワークしてます。

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)

これで治りました!