2012-11-27 2 views
0

Je fais de l'analyse et du rendu RSS - fonctionne parfaitement sur localhost et production chez Heroku, mais pour une raison quelconque, ce flux RSS ne fonctionne que sur localhost, mais pas sur Heroku.Erreur d'analyse RSS sur Heroku

Voici le flux RSS:

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

Voici l'erreur que je reçois sur 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' 

Voici mon code:

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

Je suis exigeant:

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

Cela semble être un flux RSS parfaitement valide - et encore une fois, fonctionne très bien sur localhost - mais pas quand déployé à Heroku .... des pensées?

Répondre

1

Ce domaine n'aime pas les serveurs d'heroku faisant des requêtes HTTP GET.

De 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 

de la machine locale

➜ 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 

Si vous imprimez le corps de la réponse par Heroku, il fournit les informations suivantes

Cette adresse IP est seulement autorisé à accéder à notre API. Pour protéger nos utilisateurs, nous ne pouvons pas traiter les demandes provenant de cette adresse IP. Si vous pensez avoir atteint cette page par erreur, contactez-nous.

+0

Impressionnant - Dieu sait combien de temps vous venez de me sauver. – cman77

+0

Puis-je demander comment vous avez fait ceci "Si vous imprimez le corps de la réponse à travers Heroku, il fournit les informations suivantes" – cman77

+0

Oui, n'utilisez aucun des drapeaux de la commande curl. Faites simplement 'heroku run" curl careers.joelonsoftware.com/jobs/feed "'. 'heroku run' exécutera des commandes shell arbitraires contre l'instance heroku * (bien que tout ne soit pas supporté/autorisé/disponible) * – deefour