2011-05-09 2 views
1

지연된 작업과 함께 사용할 때 Nokogiri를 작동 시키려고하고 있지만 지금까지 성공하지 못했습니다. Nokogiri가 지연된 작업과 함께 작동하도록하는 것

는 기본적으로 나는 백그라운드에서 구문 분석 작업을 실행하려고하지만, 배경 작업자 내 수행 방법을 칠 때, 그것은 다음 줄에 실패

HTML_page = Nokogiri::HTML(open('http://www.mysite.com')) 

오류 메시지는 다음과 같습니다

Nokogiri::HTML::Document#inspect failed with ArgumentError: Requires a Node, NodeSet or String argument, and cannot accept a Delayed::Backend::ActiveRecord::Job.

이것은 Delayed::Jobs.enqueuedelay 방법 모두에서 발생합니다. 내가 콘솔에서 아래의 라인을 시도 할 경우

, 나는 같은 오류 얻을 : 나는 루비와 레일스에 비교적 새로운 오전으로

Nokogiri::HTML(open('http://www.mysite.com')).delay 

그것은 바보 같은 감독이 될 수를, 그래서 어떤 도움을 크게 감상 할 수있다 .

답변

0

Nokogiri가 "Node, NodeSet 또는 String 인수가 필요합니다."라는 이유로, 왜 그것을주지 않습니까?

대신 :

HTML_page = Nokogiri::HTML(open('http://www.mysite.com')) 

시도 : IO가 open에 의해 생성 된 파일 핸들을 읽고 노코 기리에게 URL의 문자열 내용을 전달하게됩니다

HTML_page = Nokogiri::HTML(open('http://www.mysite.com').read) 

가 읽을.

body = open('http://www.mysite.com').read 
HTML_page = Nokogiri::HTML(body) 
:

내가 노코 기리 내에서 거짓말을 생각하지 않는 문제를 디버깅 할 수 있도록하는 또 다른 방법은, 조금 명령을 분할하는 것입니다