2012-03-28 9 views
5

RubyデバッガをRailsで使用しているとき、どのようにコードを書き留めておけばいいですか?すべてのネイティブRailsコードをスキップしますか?Rubyデバッグ:Skip Railsコード

(すなわち、次のようになり、すべてのコードをスキップ)

/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/module/remove_method.rb:4 
remove_method(method) 
(rdb:1) s 
[76, 85] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb 
    76   def self.#{name}?() !!#{name} end 
    77 
    78   def self.#{name}=(val) 
    79   singleton_class.class_eval do 
    80    remove_possible_method(:#{name}) 
=> 81    define_method(:#{name}) { val } 
    82   end 
    83 
    84   if singleton_class? 
    85    class_eval do 
/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb:81 
define_method(:#{name}) { val } 
(rdb:1) s 
[79, 88] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb 
    79   singleton_class.class_eval do 
    80    remove_possible_method(:#{name}) 
    81    define_method(:#{name}) { val } 
    82   end 
    83 
=> 84   if singleton_class? 
    85    class_eval do 
    86    remove_possible_method(:#{name}) 
    87    def #{name} 
    88     defined?(@#{name}) ? @#{name} : singleton_class.#{name} 

ありがとう!

答えて

1

私はあなたの質問を正しく理解すれば、thisのようなものだと思います。 レールのメソッドにレールコードを使用しないと、そのようにステップインするのではなく、ステップオーバーする必要があります。私はこれが役立ち、幸運を願っています。

+0

これは間違いありませんが、私が書いたコードの冒頭にブレークポイントを置いた場合を除いて、すべてのネイティブレールコードをスキップできるものはありません。これは確かに理想的ではありません。 .. –

1

場合によっては、一部のRailsコードをステップした場合は、コンソール内ではpress cと表示されます。これにより、設定した次のブレークポイントに移動します(またはループ内にある場合は同じものに戻ります)。ブレークポイントが残っていない場合は、単にページ要求を終了します。

+0

これは私が今やっていることですが、モデルコードに入るコントローラのコード列に従ってほしいと言っています(オブジェクトや何かを保存したときなど)。コントローラコードとモデルコードにブレークポイントを設定する必要があります。方法はありますか?コードがどこにつながったのかわからない場合(つまり、コントローラコードがモデルコードにつながったことを知らなかった場合)、モデルコードで停止し、すべてのネイティブレールコードをスキップします。つまり、私が書いたコードにヒットし、そこにブレークポイントが入るまで続けます。 –

+0

@JonathanLeung申し訳ありませんが、Rubyデバッグでは、 "ネイティブ"コードの開始位置と終了位置を区別できません:)このような問題を解決するには、非常に単純なコードです。あなたがルビーデバッグと言ったことがないなら、「ここ、こことここでやりたい」と、最後まですべてのメソッドチェーンを通ります。 –

+1

@NashBridges実際には、ユーザーが '〜/ rvm/gems/ruby​​.2.0.0-p247/gems'のように、スキップされたファイルリストにフォルダを追加できるようにすることで実現できました。それは難しくないと私はそれが有用であることに同意する。 – deivid

0

3主要なデバッグがあります

  • Cコマンド -
  • のnへのステップ - -
  • の続行をお探しのものが

オーバー/次のステップは「nとします"では、コードの残りの部分を含むコードやルビの宝石に入ることなく、メソッドのリストを調べることができます。

関連する問題