2009-08-29 11 views
2

現在、私は(HTTPServerの/ CGIで使用する)ERBテンプレートにエラーを取得するとき、私は次のようにします。Ruby erbファイルをデバッグするためのヒントを教えてください。

  • それは小さな変更だ場合は、元に戻し保存して再テストします。
  • 大きな変更または新しいファイルの場合は、コードの1/2を削除またはコメントして再テストします。私が壊れたコードを削除/発見するまで、バイナリ検索を実行します。

コールスタックが自分の.rhtmlファイル内のものと一致していないようです。

(erb):6:in `block in <main>' 
/opt/local/lib/ruby/1.9.1/erb.rb:753:in `eval' 
/opt/local/lib/ruby/1.9.1/erb.rb:753:in `result' 
bin/correct.rb:45:in `block in <main>' 
/opt/local/lib/ruby/1.9.1/webrick/httpservlet/prochandler.rb:26:in `call' 

答えて

3

Daniel氏によると、ほとんどの場合、エラーメッセージは、エラーの原因をすばやく見つけるのに役立ちます。

実際にはそうではない場合があります。

バイナリ検索がちょうど

<%= the_error_is_after_this_line %> 

のような間違った行を挿入して、あなたは正確な行を見つけるまで線を移動していることを行うには愚かで、より高速な方法。

私は、働くだけの時間にたくさんの行を書くことができる明るいプログラマーではありません。私は通常小さなステップで開発し、毎回ブラウザにページをリロードします。

しかし、ビュー(またはメソッドなど)をデバッグするのを避けるためのより良い方法は、単純で短いものを書くことです。私の経験則では、単純なHTMLでない限り、エディタウィンドウで全体のビュー(またはメソッド)を読むことができなければならないということです。

常にヘルパーと部分的なビューを使用してください。あなたは、あなたのerbビューの行に2つ以上()または[]を数えられますか?はいの場合は、ヘルパーを使用します。

ビューで2〜3ブロック以上をカウントできますか?いくつかの部分を使う。

+0

良いもの。私は彼がRailsを使っているとは思っていませんが、パーシャルの機能を得るのは簡単ですし、ERBの作業をたくさんやっているなら、そうすることをお勧めします。 –

+0

ありがとうございます。私は助けてくれるものもいくつか見つけました。行番号が分かりにくいので、ここの文書を使わないでください。それをレンダリングする前にテンプレートオブジェクトにファイル名を設定します。 – brianegge

0

一般的にErbエラーは、発生した場所を示します。例えば、エラーはerbファイルの6行目にあります。バックトレースに付属のエラーメッセージを省略しましたが、通常はどのような種類のエラーがあるかがわかります。たとえば、私の簡単なテストでは、

NameError: undefined local variable or method `asdf' for main:Object 
    from (erb):7 
    from (irb):6 

何が起こっているのか、どこで間違っているのかはっきりしています。

あなたのエラーとそれを引き起こしたerbに関するさらに詳しい情報を投稿できますか?

2

これがこの問題に該当するかどうかは不明ですが、多分それが誰かを助けるのでしょうか。私はレール5を使用していますし、あなたのhtml.erbファイルに

<% debugger %> 

を置けば、それはあなたのレールのサーバが実行されているターミナルウィンドウを一時停止します。そこから、あなたは何のparamsまたは変数あなたhtml.erbをデバッグすることができますファイルがあります。

関連する問題