2009-07-12 158 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