Verificar si un sitio esta en linea

Hola amigos de RoR.

Tengo el siguiente problema:

sucede que estoy haciendo un redirect en un controlador, algo parecido a
esto:

def


redirect_to “www.sitio.com
end

el problema es que si el sitio no es en linea funcionando el navegador
muestra “Sitio no encontrado y otras cosas”, es justamento esto lo que
quiero evitar, y aqui va mi pregunta habra algun metodo en Ruby para
saber si el sitio(www.sitio.com) esta en linea actualmente, algo
parecido a esto

def


if MiSitio(www.sitio.com).enlinea
redirect_to “www.sitio.com
else
render :text => “Un mensaje”
end

end

Quiero hacer esto para que solo en caso de el sitio este en linea se
haga el redirect, sino lo esta mostrar algun mensaje o mostrar otro
action local.

Les estare agradecido por cualquier sugerencia.

Prueba esto:
req = Net::HTTP::Get.new(‘www.sitio.com’)

y luego compruebas el status de req, a ver si es Net::HTTPSuccess

s2

Rcarlos Rcarlos_ag wrote:

Hola amigos de RoR.

Tengo el siguiente problema:

sucede que estoy haciendo un redirect en un controlador, algo parecido a
esto:

def


redirect_to “www.sitio.com
end

el problema es que si el sitio no es en linea funcionando el navegador
muestra “Sitio no encontrado y otras cosas”, es justamento esto lo que
quiero evitar, y aqui va mi pregunta habra algun metodo en Ruby para
saber si el sitio(www.sitio.com) esta en linea actualmente, algo
parecido a esto

def


if MiSitio(www.sitio.com).enlinea
redirect_to “www.sitio.com
else
render :text => “Un mensaje”
end

end

Quiero hacer esto para que solo en caso de el sitio este en linea se
haga el redirect, sino lo esta mostrar algun mensaje o mostrar otro
action local.

Les estare agradecido por cualquier sugerencia.

Muchas gracias por responder Fernando, estube trantando de hacer
funcionar lo me sugieres, el codigo que escribi es el siguiente:

req = Net::HTTP::Get.new(‘http://www.sitio.com’)
case req.status
when Net::HTTPSuccess
puts ‘esta en linea’
else
puts ‘NO ESTA EN LINEA’
end

El problema que tengo es que no existe el metodo status, por tanto sale
un error, espero que me puedan ayudar a solucionar este problema.

Gracias por la ayuda Fernando al fin lo pude resolver, aqui pongo la
solucion por si alguien lo necesita algun dia.

begin

url = URI.parse(“www.sitio.com”)
req = Net::HTTP::Get.new(url.path)
http_resp = Net::HTTP.new(url.host, url.port).start {}
puts “El sitio esta en linea”

rescue

puts “El sitio NO esta en linea”

end

Yo es que esto no lo he hecho nunca, lo que sí he hecho son POSTs de
XMLs en vez de GETs de HTML; pero aunque no funciona exactamente igual,
te pego mi código, y con eso busca por Google y por las clases
correspondientes, a ver si lo sacas…

url = URI.parse('http://www.sitio.com')
req = Net::HTTP::Post.new(url.path)
req.content_type = 'text/xml'
req.basic_auth 'usr', 'pw'
req.body = xml
http_resp = Net::HTTP.new(url.host, url.port).start {|http| 

http.request(req) }

# Procesar respuesta Net:OK
case http_resp
when Net::HTTPSuccess, Net::HTTPRedirection
  respuesta = Hash.from_xml(http_resp.body)['token']['response']
  return respuesta

# Procesar respuesta Net:ERROR
else
  fallo_conexion()
  return false
end

(obviamente, lo de basic_auth no lo necesitas en tu caso… lo dejo ahí
por si alguien quiere hacer lo mismo que yo).

s2

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs