2012-01-29 22 views
1

我擴展了Nokogiri :: HTML:Document類以添加一個名爲on_same_line的函數?在Rails應用中擴展nokogiri

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 

我把這個代碼在3個應用程序樹

我調用該函數如下

if @html_doc.on_same_line?(node,node2,font_size_hash) 
    ### do something 
end 

此代碼位於LIB /引入nokogiri/HTML/document.rb在我的rails文件是在我創建的單獨的自定義ruby類中。這個類是MyClass,位於MyModule中。這個類的代碼放在lib/my_module/my_class.rb中

現在,當這段代碼作爲我的rails應用程序的一部分執行時,出現以下錯誤。

unexpected '?' after '[#<Nokogiri::CSS::Node:0x00000100dfebd8 @type=:ELEMENT_NAME, @value=["on_same_line"]>]' 

我不知道爲什麼會發生這種情況。可能有人請幫我

而且當我運行Rails應用程序之外相同的代碼,我沒有得到任何錯誤,它按預期工作

感謝 保羅

+0

你的猴子補丁代碼中發現我的回答在這個線程 http://stackoverflow.com/questions/4235782/rails-3-library-not-loading-until-require – ppaul74 2012-01-30 01:14:52

回答

0

在軌道3,你需要把在配置/初始化,而不是lib下