0

我试图让 Hpricot 在我的开发机器上与 Rails 一起工作。

我已经使用标准的“gem install hpricot”安装了 Hpricot [0.8.1],并确认它适用于我的标准 Ruby 安装 [1.8.7];但是,当我尝试使用我的 Rails [2.1.0] 安装时,我得到一个错误 -

TypeError:来自/usr/lib/ruby/1.8/hpricot/tag.rb:130 的类BogusETag 的超类不匹配

似乎存在某种冲突,但谷歌搜索错误并没有找到任何有用的信息。

有任何想法吗 ?提前致谢。

4

4 回答 4

1

如果您可以自由选择您的 HTML 解析库,请切换它。为什么,Hpricot 的创建者最近发布说,现在你应该更好地使用Nokogiri而不是 HPricot。

于 2009-07-25T12:14:40.837 回答
1

出现此错误的原因是该平台没有已编译的库。要为您当前的 hpricot 版本解决此问题,请转到您的 rails 目录并执行以下操作(假设您使用的是未打包的 gem - 否则不会出现此问题,除非您的操作系统在安装 gem 后已升级):

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

然后将编译后的库复制到您系统的正确平台目录。OS X 的每个版本都有一个稍微不同的平台名称,所以我的(Snow Leopard)显示为:

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/

为您的机器替换适当的平台名称(从 irb 放入 RUBY_PLATFORM)。

于 2009-11-04T11:29:06.387 回答
0

尝试在 irb 会话中使用 Hpricot,因为我认为这通常不应该发生


irb(main):001:0> 需要'rubygems'
=> 真
irb(main):002:0> 需要'hpricot'
=> 真
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')
=> # "测试" }]>
irb(main):005:0> doc.search('title').text
=> “测试”

这意味着您的 Hpricot 工作正常。问题在于您在 Rails 中使用它的方式。(如果您可以粘贴代码会更容易)。

我之前在 Hpricot(0.8.1) 上遇到的问题很少,不得不切换回 0.6.164 版本。如果你愿意,你可以试试。

高温高压

于 2009-07-13T08:12:02.443 回答
0

执行以下命令及其工作

宝石安装 hpricot --platform=mswin32

于 2010-09-22T18:54:40.373 回答