ゴーストの方法ルビーの宝石の中にたくさんありますので、私はルビーの宝石の内部メカニズムをちょうど勉強するのは良い考えではないと思いますそのソースコードを静的に読む。実行中のルビープロセスに第三者の宝石のソースファイルを添付してデバッグする方法がありますので、ブレークポイントを設定したり、物事がどのように動的に動作するかを見ることができます。
私はRubyMineの3番目の宝石のソースファイルに移動しようとしましたが、 'require'ステートメントの文脈メニュー「Go To-> Implementations」または3番目宝石の他のシンボル(例えば、require 'watir'
)、成功することはありません。 Rubyのようなダイナミックな型指定言語のIDEがシンボルナビゲーションに失敗するのは普通ですか?ルビーのサードパーティ製の宝石をデバッグする最良の方法
答えて
私はこれを行うには良い方法があるかどうかを知るのが大好きだが、それがどのように私は通常の操作を行います。
- があなたのGemfileにルビー・デバッグ宝石を追加(またはあなたがならルビーdebug19 Ruby 1.9.2について)
bundle show gemname
を実行してGemを検索します。私はMac上にあるので、通常これをpbcopyにパイプしてクリップボードにコピーします。bundle show rails | pbcopy
- お気に入りのエディタでgemディレクトリを開きます。
mvim /path/to/gem/directory
- ブレークポイント*を挿入するファイルと行に移動し、問題の行の上に
debugger
を挿入します。 - リロードページ、実行するテスト、または実行がデバッガで停止した場合、あなたは変数(
p variable_name
)を検査し、ruby debugger commandsと行ずつ移動することができます - 実行するために宝石のファイルを取得するために何でもあなたが希望ください。ブレークポイントを置くことを知っ
*コードのいくつかの理解を取ることができますが、現在受け入れ答えで提案されているように、私は宝石のファイルを編集回避するのlib/gemname.rb
、実行時にコードを変更する言語では、Rubyのような、ハードで正確にシンボルの起源を100%を予測する、方法など
私は、ソースコードの解析を必要とするサードパーティ製の宝石の多くに対処し、私はこの仕事のための最良のツールがNetbeas + RubyとRailsのプラグインだと分かった。
- は、実際には、いくつかの不具合を持って
**(トレースとすべてで)仕事(他の選択肢とは違って)依存宝石のソースコードでは良いナビゲーション
私が通常行っていることは、実行時にブレークポイントを設定してコードを分析することです。
に開始する必要があります。代わりに、debugger
コマンドをアプリケーションファイルの1つに入れて、break
コマンドを使用して宝石にブレークポイントを設定します。
break /Users/chris/.rvm/gems/[email protected]<gemset>/gems/<gem_name>-<gem-version>/<path_to_file>:<line_number>
同じGemを使用している場合、受け入れられた回答は同じマシンの他のアプリケーションに干渉しますか?もしそうなら、この解決策がその問題を回避するように思われる。 – flyingL123
はい。それは全体のポイントです。あなたがオプションから外れていない限り、私はあなたがそれらをフォークするつもりがない限り、すべての費用でGemファイルを編集しないでください –
- 1. 最新のルビーの宝石はどこですか?search.cpan.org/recentのルビーの宝石
- 2. シンプルなスペルチェック方法/ルビーの宝石?
- 3. Railsアプリケーションでネームスペース競合をサードパーティ製の宝石と修正する方法
- 4. ルビー宝石コンパスインストールエラー
- 5. Bit.lyのカスタムクエリ - ルビーの宝石
- 6. ルビー2.2宝石のDNSエラー
- 7. シェフ:Vault Hashicorpルビーの宝石
- 8. 宝石のルビー依存性をリストする最良の方法は何ですか?
- 9. コード読み取りでルビーの宝石を微調整する最良の方法
- 10. ルビーの宝石にデータを保持する方法は?
- 11. Jupyterノートブックでルビーの宝石を要求する方法は?
- 12. ルビーの宝石をスタンドアロンのルビースクリプト
- 13. ルビー - 新しい宝石が
- 14. ルビー1.9:宝石crypt19:blowfish.encrypt_string:エンコーディング
- 15. Mixpanelはmixpanel-ルビー宝石
- 16. ルビー宝石RestClient、HTTP 415
- 17. 宝石で仕事をスケジュールする最良の方法は何ですか?
- 18. 宝石を書くときにソースファイルを要求する最良の方法
- 19. サードパーティ製の宝石をカスタマイズし、実稼働環境で使用する
- 20. 複数の宝石をコンピュータにインストールする最も良い方法は?
- 21. ルビー:宝石依存関係の問題
- 22. 私のルビーの宝石からの出力を見るには良い方法はありますか?
- 23. は、宝石のルビー・デバッグをインストールしますが、サーバーはそれを
- 24. ルビーの宝石の中でモジュール内のクラスを修正する方法
- 25. ルビーの宝石をあるサーバから別のサーバに移動する方法
- 26. ベンダーフォルダに 'spree'のようなサードパーティの宝石を含める方法
- 27. rails:サードパーティの宝石のレスポンスとリクエストを記録するには?
- 28. ルビーの宝石であるコードを取得するには?
- 29. レールにjsメソッドを追加するルビーの宝石を書く
- 30. ルビー2.2.2の宝石の更新に関する問題
ありがとう:私はので、ここで
gemset
とrvm
が、私はそれを行う方法であるを使用しています。これは素晴らしいです。 FWIW、私は[Pry](https:// rubygems。org/gems/pry)の代わりにruby-debugを使用しました。 –同じマシン上の他のアプリケーションが同じGemを使用している場合は、これが中断されますか? – flyingL123
@ flyingL123、彼らはあなたのアプリとしてデバッグモードで実行されている場合は、他の人を中断すると思います。 – parzival