2009-07-12 4 views
0

Я пытаюсь заставить Hpricot работать с Rails на моей машине dev.Получение Rails для игры с Hpricot

Я установил Hpricot [0.8.1] с помощью стандартного «gem install hpricot» и подтвердил, что он отлично работает с моей стандартной установкой Ruby [1.8.7]; Однако, когда я пытаюсь то же самое с моим Rails [2.1.0] установка, я получаю сообщение об ошибке -

TypeError: суперкласс несоответствия для класса BogusETag от /usr/lib/ruby/1.8/hpricot/tag.rb:130

Кажется, что есть какой-то конфликт, но ошибка в googling не принесла никакой полезной информации.

Любые идеи? Заранее спасибо.

+1

ли это происходит в абсолютно ванильным приложение только с шаблонным +, которые требуют линии? – Chuck

ответ

1

Если вы свободны в выборе HTML разборе библиотеки, включите его. Почему, создатель Hpricot, недавно опубликовал, что теперь лучше использовать Nokogiri вместо HPricot.

+0

Можете ли вы опубликовать ссылку со ссылкой на его объяснение? Вы не дали веских оснований в своем ответе на выбор Нокогири. –

+1

Это не подкреплено. Создатель HPricot, названный «Почему удачливый жесткий» или просто «почему» или «_why», недавно удалил все свои онлайн-аккаунты и домены. Бывшая домашняя страница для hpricot была http://code.whytheluckystiff.net/hpricot/ (не работает!). См. Третий абзац http://en.wikipedia.org/wiki/Why_the_lucky_stiff или http://news.ycombinator.com/item?id=773106 для справки.Сообщество создало зеркала для своих работ, например. http://github.com/whymirror/hpricot/tree/master для hpricot. Тем не менее код более или менее не поддерживается. Почему цитата из Twitter для перехода на Нокигири больше не доступна. –

0

Попробуйте использовать Hpricot в IRB сессии, потому что я не думаю, что это должно произойти, как правило

 


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. вы можете попробовать это, если хотите.

НТН

1

Эта ошибка возникает из-за отсутствия скомпилированной библиотеки для платформы. Чтобы решить эту проблему для текущей версии hpricot, перейдите в каталог директорий rails и выполните следующие действия (предполагается, что вы используете распакованный камень - эта проблема не будет возникать иначе, если только ваша ОС не была обновлена ​​с момента установки 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/ 

Подставьте соответствующее имя платформы (кладет RUBY_PLATFORM от IRB) для вашей машины.

0

Execute Ниже команды и ее работы

камень установить Hpricot --platform = mswin32

Смежные вопросы