2009-07-12 56 views
0

我想讓Hpricot在我的開發機器上使用Rails工作。讓Rails玩Hpricot

我已經使用標準的'gem install hpricot'安裝了Hpricot [0.8.1],並確認它可以正常使用我的標準Ruby安裝[1.8.7];然而,當我嘗試用相同的我的Rails〔2.1.0〕安裝,我得到一個錯誤 -

類型錯誤:從/usr/lib/ruby/1.8/hpricot/tag.rb:130

類BogusETag超不匹配

似乎存在某種衝突,但使用Google搜索錯誤並未發現任何有用的信息。

任何想法?提前致謝。

+1

這是否發生在一個完全香草應用與要求行只是樣板+? – Chuck 2009-07-12 18:53:18

回答

1

如果您可以自由選擇HTML解析庫,請將其切換。 爲什麼Hpricot的創造者最近宣佈,現在應該更好地使用Nokogiri而不是HPricot。

+0

你能張貼一個鏈接引用他的解釋嗎?在你選擇Nokogiri的回答中,你沒有給出令人信服的理由。 – 2009-09-08 17:11:29

0

嘗試在IRB會話使用角度來說,Hpricot,因爲我不認爲這一般應發生

 


irb(main):001:0> require 'rubygems' 
=> true 
irb(main):002:0> require 'hpricot' 
=> true 
irb(main):003:0> doc=Hpricot.parse("<html><head><title>test</title></head><body> Wooo Hooo </body></html>") 
=> # {elem {elem "test" } } {elem " Wooo Hooo " } }> 
irb(main):004:0> doc.search('title') 
=> # "test" }]> 
irb(main):005:0> doc.search('title').text 
=> "test" 

這意味着您的角度來說,Hpricot是工作的罰款。問題在於你在Rails中使用它的方式。 (如果你可以粘貼你的代碼,會更容易)。

我之前幾乎沒有與Hpricot(0.8.1)有關的問題,不得不切換回0.6.164版本。你可以嘗試,如果你想。

HTH

1

發生此錯誤是因爲該平臺沒有編譯的庫。爲了解決你當前的hpricot版本問題,請到你的rails目錄目錄並執行以下操作(假設你使用的是一個解壓縮的gem--除非你的操作系統已經在安裝gem後升級了,否則這個問題不會出現其他問題):

cd vendor/gems/hpricot-0.6/ext/hpricot_scan/ 
ruby extconf.rb 
make 

然後將已編譯的庫複製到系統的正確平臺目錄中。 OS X的每個版本有一個稍微不同的平臺的名字,所以我的(雪豹)顯示爲:

ruby-1.8.6-p383 > RUBY_PLATFORM 
=> "i686-darwin10.0.0" 

這意味着我需要複製該文件「hpricot_scan.bundle」(OS X使用捆綁的共享庫,在Linux上,這將是「hpricot_scan.so」)到以下目錄,如果有必要創建它:

vendor/gems/hpricot-0.6/lib/i686-darwin10.0.0/ 

替換爲相應的平臺名稱(把RUBY_PLATFORM從IRB)爲您的機器。

0

執行以下命令及其作品

創業板安裝角度來說,Hpricot --platform = mswin32