我正在尝试使用Builder :: XMLMarkup来构建一些xml,并且它不断向我的xml添加一个空元素.
为什么会这样做,如何阻止它?
xml = Builder::XmlMarkup.new
=> <inspect/>
Run Code Online (Sandbox Code Playgroud)
Fre*_*ung 19
Builder实现了一个版本,method_missing它添加了由方法调用名称给出的标记.
假设您正在使用irb(或rails'控制台),当您评估表达式(例如Builder::XmlMarkup.new)时,irb的默认行为是调用inspect它,以便生成要显示给您的字符串.在构建器的情况下,inspect不是通常的ruby inspect方法 - 它会落到method_missing并添加标记.
这只会在交互式玩ruby时发生.你可以做类似的事情
xml = Builder::XmlMarkup.new; false
Run Code Online (Sandbox Code Playgroud)
这里表达式的结果是false如此irb调用inspect,并使您的构建器对象单独使用.
继续这样做可能很尴尬.如果你这样做
xml = Builder::XmlMarkup.new; false
def xml.inspect; target!; end
Run Code Online (Sandbox Code Playgroud)
然后xml仍然是一个构建器对象,在irb检查时显示其内容.您将无法创建被调用的标签inspect(除了使用之外tag!),但这通常是一个小小的不便.
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |