Ruby on rails 在rails应用程序中扩展nokogiri

Ruby on rails 在rails应用程序中扩展nokogiri,ruby-on-rails,nokogiri,extending-classes,Ruby On Rails,Nokogiri,Extending Classes,我对Nokogiri::HTML:Document类进行了如下扩展,以添加在同一行上调用的函数 module Nokogiri module HTML class Document def on_same_line?(node1,node2,font_sizes) return false if node1.nil? or node2.nil? or font_sizes.nil? return false if (node1.name

我对Nokogiri::HTML:Document类进行了如下扩展,以添加在同一行上调用的函数

module Nokogiri
  module HTML
    class Document 
      def on_same_line?(node1,node2,font_sizes)
        return false if node1.nil? or node2.nil? or font_sizes.nil?
        return false if (node1.name != "div" ||  node2.name != "div")
        fsize1 = font_sizes[node1.children[0].children[0].attributes["class"].value]
        fsize2 = font_sizes[node2.children[0].children[0].attributes["class"].value]
        style1 = node1.attributes["style"].value
        style2 = node2.attributes["style"].value
        top1 = style1.split(/;/)[1].split(/:/)[1].to_i
        top2 = style2.split(/;/)[1].split(/:/)[1].to_i
        (top1 + fsize1 - top2 - fsize2).abs < 4  
      end
    end
  end
end
这段代码位于我创建的一个单独的自定义ruby类中。此类为MyClass,位于MyModule中。此类的代码放在lib/my_module/my_class.rb下

现在,当此代码作为rails应用程序的一部分执行时,我得到以下错误

unexpected '?' after '[#<Nokogiri::CSS::Node:0x00000100dfebd8 @type=:ELEMENT_NAME, @value=["on_same_line"]>]'
我不知道为什么会这样。有人能帮帮我吗

另外,当我在rails应用程序之外运行相同的代码时,我没有收到任何错误,并且它按照预期工作

谢谢
Paul

在rails 3中,您需要将monkey补丁代码放在config/initializers下,而不是lib下
unexpected '?' after '[#<Nokogiri::CSS::Node:0x00000100dfebd8 @type=:ELEMENT_NAME, @value=["on_same_line"]>]'