2009-05-30 9 views
2

HTML을 읽는 데 hpricot을 사용하고 있습니다. 세그멘테이션 오류가 발생했습니다. Google 검색을 통해 최신 버전의 Ruby로 업그레이드 할 수 있습니다. 레일 2.3.2와 루비 1.8.7을 사용하고 있습니다. 이 오류를 해결하는 방법?hpricot의 세그먼트 오류

답변

0

글쎄, 내 질문에 따르면, "최신 버전의 루비로 업그레이드"라고 말하고 싶습니다. 그러나, 나는 또한 hpricot segfaulting에 관한 문제를 겪었는데, 이는 스레딩의 내 사용과 관련이있는 것처럼 보였다.

+0

하지만 이미 거의 최신 버전의 루비를 사용하고 있습니다. 또한, 내 코드에서 스레딩을하지 않습니다. ( – user85748

+0

아아 아님. 루비 최신 1.9.1 –

+0

내 호스트가 1.8.5를 사용 중입니다. 내 dev 컴퓨터에서 1.9.1로 업그레이드해도 코드를 프로덕션에 배포하십시오 – user85748

4

당신이 라이브러리를 파싱하여 HTML을 자유롭게 선택할 수 있다면, 그것을 전환합니다. 왜 Hpricot의 제작자는 요즘 HPricot 대신 Nokogiri을 더 잘 사용해야한다고 게시했습니다.

또한 HTTParty를 살펴볼 수도 있습니다.

+1

그는 또한 인터넷에서 사라 졌으므로 HP 콜트는 유지되지 못하는 것처럼 보입니다. – molf

0

동일한 segfault 문제가 있습니다.하지만 슬프게도 Google 캐시를 통해 위에서 언급 한 Dave 문제를 상담 할 수 없습니다. parse.rb를 검색해오고 있습니다. segfaults는 인코딩 된 항목 또는 alt와 관련이 있습니다. 문자 세트 (아마도 악센트 문자)

살균 lib 디렉토리 같은 문제가 발생하고 여기에 monkeypatch을 게시 : 메모리에서 http://github.com/rgrove/sanitize/blob/1e1dc9681de99e32dc166f591343dfa60fc1f648/lib/sanitize/monkeypatch/hpricot.rb

1

, 내가 마지막에 대해 그것을 사용하기 때문에 년 전 :

Hpricot을 저장 특성을 고정 크기 버퍼에서, 일부 프레임 워크는 outrag를 생성합니다. 문서 속성에 긴 해시가 있습니다. 파싱하기 전에 설정할 수있는 정적 필드가있어이 버퍼의 크기를 설정할 수 있습니다.

웹 페이지의 워드 프로세서에서 상당히 두드러졌지만 물론 사라졌습니다.

+3

Hpricot.buffer_size = 262144 –

5

많은 유니 코드 문자가 포함 된 html 페이지를 구문 분석하려고했지만 Hpricot이 계속 충돌했습니다. 마지막으로, 나는 사냥에서 멍키 패치를 사용하여 환경에 두었다. 레일 애플리케이션 용. 나는이 패치를 추가하기 때문에 하나의 충돌이되지 않았습니다 : 루비 1.8.5에

http://github.com/rgrove/sanitize/blob/1e1dc9681de99e32dc166f591343dfa60fc1f648/lib/sanitize/monkeypatch/hpricot.rb

+0

이것은 완벽하게 작동했습니다! Nokogiri (와 계획)로 전환해야한다는 것을 알고 있지만, 이전 프로젝트의 경우이 수정이 필요했습니다! –

+0

이 패치를 사용하는 방법은 무엇입니까? –

2

사용하여 시도 Hpricot을 -v 0.6.161

나를 위해 일했다.