Builder :: XMLMarkupを試してxmlをビルドしようとしていますが、xmlに空の要素が追加され続けています。
なぜこれを行うのですか、どうすれば停止できますか?
xml = Builder::XmlMarkup.new
=> <inspect/>
Buildermethod_missing
は、メソッド呼び出しの名前で指定されたタグを追加するバージョンを実装します。
irb(またはrailsのコンソール)でプレイしていると仮定すると、式(など)を評価するときのirbのデフォルトの動作は、表示する文字列を生成するために、式Builder::XmlMarkup.new
を呼び出すことです。inspect
ビルダーの場合inspect
、通常のルビーinspect
メソッドではありません-それはフォールスルーしmethod_missing
てタグを追加します。
これは、ルビーをインタラクティブにプレイする場合にのみ発生します。あなたは次のようなことをすることができます
xml = Builder::XmlMarkup.new; false
ここで、式の結果は、false
irbがそれinspect
を呼び出し、ビルダーオブジェクトをそのままにしておくことです。
これを継続的に行うのは厄介な場合があります。もし、するなら
xml = Builder::XmlMarkup.new; false
def xml.inspect; target!; end
そのxml
場合でも、irbによって検査されたときにそのコンテンツを表示するビルダーオブジェクトになります。inspect
(を使用する以外に)と呼ばれるタグを作成することはできませんがtag!
、それは通常、小さな不便です。
それでも出力を確認したい場合:
xml = Builder::XmlMarkup.new; xml.target!