2012-11-27 42 views
0

我正在做一些简单的RSS解析和渲染 - 在Heroku上完美地处理本地主机和生产,但由于某些原因,这个特定的RSS源仅在本地主机上工作,但在Heroku中部署时不起作用。Heroku上的RSS解析错误

这里是RSS提要:

http://careers.joelonsoftware.com/jobs/feed?tags=network 

这里是我得到在Heroku上的错误:

A ActionView::Template::Error occurred in jobs#index: 
503 Service Unavailable 
/usr/local/lib/ruby/1.9.1/open-uri.rb:346:in `open_http' 

这里是我的代码:

@rss = RSS::Parser.parse(the_rss_feed, false) 
render :partial => "layouts/rss_syndicated_jobs", :locals => {:rss => @rss} 

我需要:

require 'rss/2.0' 
require 'open-uri' 

这似乎是一个完全有效的RSS源 - 再一次,在localhost上工作正常 - 但在Heroku中部署时没有....任何想法?

回答

1

该域名不喜欢使用HTTP GET请求的heroku服务器。

从Heroku的

➜ deefour ✗ heroku run "curl -s -D - careers.joelonsoftware.com/jobs/feed -o /dev/null" 
Running `curl -s -D - careers.joelonsoftware.com/jobs/feed -o /dev/null` attached to terminal... up, run.9211 
HTTP/1.0 503 Service Unavailable 
Cache-Control: no-cache 
Connection: close 
Content-Type: text/html 

从本机

➜ deefour ✗ curl -s -D - careers.joelonsoftware.com/jobs/feed -o /dev/null 
HTTP/1.1 200 OK 
Cache-Control: private, max-age=1800 
Content-Type: application/rss+xml; charset=utf-8 
Expires: Tue, 27 Nov 2012 02:46:38 GMT 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, OPTIONS 
Access-Control-Allow-Headers: x-requested-with 
Access-Control-Max-Age: 60 
Date: Tue, 27 Nov 2012 02:16:38 GMT 
Content-Length: 10982 

如果通过Heroku的打印响应体它提供了以下信息

此IP是唯一允许访问我们的API。 为保护我们的用户,我们无法处理来自此IP地址的请求。 如果您认为自己错误地访问了此页面,请与我们联系。

+0

太棒了 - 上帝知道你刚刚救了我多少时间。 – cman77

+0

我可以问你是怎么做到的“如果你通过Heroku打印响应体,它提供了以下信息” – cman77

+0

是的,只是不要使用curl命令中的任何标志。只需做'heroku运行“curl careers.joelonsoftware.com/jobs/feed”'。 'heroku run'将运行针对heroku实例的任意shell命令*(尽管并非所有东西都被支持/允许/可用)* – deefour