Hacer ping

He estado mirando como hacer ping a la itunes después de salvar un
modelo,
lo tengo que hacer por medio de POST de un archivo xml o llamado a una
URL (como lo haría desde el navegador)
¿como podría hacer?

¿simplemente con open-uri y hacer un observer?

marze!

On Wed, Jul 23, 2008 at 02:04, Marcelino L. Villa [email protected]
wrote:

He estado mirando como hacer ping a la itunes después de salvar un
modelo,
lo tengo que hacer por medio de POST de un archivo xml o llamado a una
URL (como lo haría desde el navegador)
¿como podría hacer?

¿simplemente con open-uri y hacer un observer?

marze!

open-uri no te vale, ya que únicamente permite leer, pero no escribir.

Necesitas bajar un nivel y utilizar net/http
http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html
(modificando un poco el tercer ejemplo de Posting form data).

require ‘net/http’
require ‘uri’

uri = URI.parse(‘http://www.example.com’)
req = Net::HTTP::Post.new(uri.path)
req.body = ‘<?xml…>’
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req)
}
case res
when Net::HTTPSuccess

OK

when Net::HTTPRedirection

Seguir la redirección (mirar ejemplo en la página)

else

ERROR

end

Un poco más crudo que open-uri.

Lo único malo que le veo es que entre el request y el response de
iTunes puede pasar algo de tiempo (dependerá de la velocidad de
conexión de tu servidor y del tamaño de ese XML). Lo más recomendable
sería poner este código de forma que el usuario no tuviese que
esperar, ya sea mediante una petición asíncrona del navegador o
utilizar un sistema de proceso en segundo plano y no directamente
Rails (nunca he hecho tal cosa, pero algunas personas de la lista
parece que sí que han utilizado BackgroundRb, Starling y similares).

Suerte.

2008/7/23 Daniel R. Troitiño [email protected]:

open-uri no te vale, ya que únicamente permite leer, pero no escribir.

Necesitas bajar un nivel y utilizar net/http

Para los archivos, tambien existe rest-open-uri, que es open-uri con
el resto de verbos.