4

私のワークステーション:

$ uname -a
Linux dsktop 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux-gnu]
# (also same behavior with ruby 2.3.1)

これを調査したところ、pry-navが予期せず動作することがわかりましたが、その質問に従って再インストールしても問題は解決しませんでした。

問題 -- 最近、Brightbox Cloud ppa リソースを使用して Ruby 2.2 および 2.3 をシステム全体にインストールしました。

$ sudo apt-add-repository ppa:brightbox/ruby-ng
$ sudo apt-get update
$ sudo apt-get install ruby2.3 ruby2.3-dev

次に、Pry gem と関連する依存関係をインストールします。

$ sudo gem install pry pry-nav pry-byebug

この結果:

$ sudo gem list pry

*** LOCAL GEMS ***

pry (0.10.3)
pry-byebug (3.3.0)
pry-nav (0.2.4)

ファイルアクセスを少し開くことも必要です。

$ sudo chmod -R 755 /var/lib/gems
$ sudo chmod    755 /usr/local/bin/pry
$ sudo chmod    755 /usr/local/bin/byebug

私は以前、Ruby 1.9 と 2.1 を使用した古い RVM リグで Pry を使用していましたが、そこではうまく機能していましたが、明らかに Pry インストールの「公式を失った」か、何かが微妙に変更されています (?)。ああ、物事を複雑にする Rails はなく、単純な Ruby スクリプトだけです。

次のようなスクリプト コードを実行すると (RVM リグと非公開でインストールされた gem で問題なく動作しました):

require 'pry'
binding.pry

args = ARGV.join( ' ' )
# Check that only numbers 0..9, arithmetical operators +, -, * and /,
# decimal, comma, space and parentheses () are present in args:

もちろん、Pry-Byebug が binding.pry メソッドの呼び出しに続く行でブレークポイントを設定することを期待しています。代わりに、次のブレークポイント (?) が表示されます。

From: /var/lib/gems/2.2.0/gems/pry-nav-0.2.4/lib/pry-nav/tracer.rb @ line 21 PryNav::Tracer#run:

    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
    23: 
    24:   # Adjust tracer based on command
    25:   if process_command(command)
    26:     start
    27:   else
    28:     stop if RUBY_VERSION == '1.9.2'
    29:     if @pry_start_options[:pry_remote] && PryNav.current_remote_server
    30:       PryNav.current_remote_server.teardown
    31:     end
    32:   end
    33: 
    34:   return_value
    35: end

pry> 

それで、ここで何が起こっているのですか?.../pry-nav/tracer.rb の実行モジュールの 21 行目で Pry が中断するのはなぜですか?

Gem の作業セットを作成するには、Pry と Byebug をどのようにインストールする必要がありますか?

この回答を慎重に文書化することを約束しますので、将来再び失われることはありません! ティア。

追加 - この質問を投稿した後、さらに掘り下げて、これに出くわしました:

https://plus.google.com/114275173749981855325/posts

これは、pry と pry-nav のみをインストールする必要があり、pry-byebug はインストールしないことを示唆しています。それで、pry-byebug と ta-da! をアンインストールしました。Pry のデバッグが再び適切に機能するようになりました。

このような長い質問をして申し訳ありませんが、そのような簡単な解決策で自分自身に答えるだけです. 願わくば、この投稿が今後の「Pry のインストール方法」の改善として存続することを願っています。pry のインストールに関する既存の「信頼できる」ドキュメントは、あいまいで不正確です (または、この潜在的な問題に対処していないだけかもしれません)。

ありがとうございます。また、ご迷惑とご迷惑をおかけして申し訳ありません。

4

1 に答える 1