2011-08-20 3 views
1

저는 Ruby 1.8.7의 RSS :: Parser (stdlib의 일부)를 사용하고 있습니다. 나는 Ruby를 처음 사용합니다.Ruby RSS :: Parser.to_s가 자동으로 실패합니까?

RSS 피드를 구문 분석하고 데이터를 변경 한 다음 RSS로 출력하고 싶습니다.

docs은 '#to_s'를 사용할 수 있다고하지만 일부 피드에서는 작동하지만 다른 피드에서는 작동하지 않는 것 같습니다.

이 작동 : XML 텍스트 : 출력 예상

#!/usr/bin/ruby -w 

require 'rss' 
require 'net/http' 

url = 'http://news.ycombinator.com/rss' 
feed = Net::HTTP.get_response(URI.parse(url)).body 

rss = RSS::Parser.parse(feed, false, true) 

# Here I would make some changes to the RSS, but right now I'm not. 

p rss.to_s 

줍니다.

이 실패

#!/usr/bin/ruby -w 

require 'rss' 
require 'net/http' 

url = 'http://feeds.feedburner.com/devourfeed' 
feed = Net::HTTP.get_response(URI.parse(url)).body 

rss = RSS::Parser.parse(feed, false, true) 

# Here I would make some changes to the RSS, but right now I'm not. 

p rss.to_s 

반환 아무것도 (빈 따옴표).

그럼에도 불구하고, 나는 마지막 줄에 변경하는 경우 :

p rss 

내가 객체가 공급 모든 데이터로 채워진 것을 볼 수 있습니다. 실패하는 to_s 메소드입니다.

  1. 왜?
  2. 어떻게 이런 종류의 문제를 디버깅하기 위해 어떤 종류의 오류 출력을 얻을 수 있습니까?

답변

0

제가 알 수있는 바로는 문제는 to_s에 없으며 파서 자체에 있습니다. parser.rb 코드를 실행하면 아무 것도 반환되지 않으므로 빈 문자열을 반환하는 to_s이 유효합니다.

Feedzirra과 같은 것을 보는 것이 좋습니다.

참고로, Ruby의 Open::URI 모듈을 살펴보면 피드와 같은 웹 애셋을 쉽게 검색 할 수 있습니다. Open-URI는 간단하지만 대부분의 작업에 적합합니다. Net :: HTTP는 하위 수준이므로 Open-URI의 기능을 대체 할 더 많은 코드를 입력해야합니다.

0

동일한 문제가있어서 코드를 디버깅하기 시작했습니다. 나는 루비 RSS가 너무 많은 필수 요소를 가지고 있다고 생각한다. 채널에 '제목, 링크, 설명'이 있어야하며,없는 경우 to_s가 실패합니다.

위 그리고 to_s 실패 할 것입니다 설명을 누락 예에서 두 번째 공급 ...

나는 이것이 버그라고 생각하지만, 난 정말 코드를 이해하지 못하고 간신히 그래서 루비

사람 알고있어. 일부 요소가 빠져 있어도 to_s가 최선을 다할 것이라고 생각하는 것은 당연합니다.

어느 쪽이든

rss.channel.description = "뭔가" rss.to_s

것 "작업"

문제는 데프 have_required_elements에있다?

또는 self.class :: MODELS

관련 문제