2013-10-01 2 views
0

J'utilise net/http dans les rails pour récupérer les codes de réponse des URL avec le code suivant;demande net/http vient de revenir avec 200

require "net/http" 
require "uri" 


class Status 
def initialize(url) 
    @url = url 
end 

def get_status 
    begin 
     response.code 
    rescue Exception => e 
     Rails.logger.info("Error #{e}") 
    end 
end 

def active? 
    ["200","203","302","301"].include?(get_status) ? true : false 
end 

private 

def lookup 
    URI.parse(@url) 
end 
def http 
    Net::HTTP.new(lookup.host, lookup.port) 
end 
def request 
    Net::HTTP::Get.new(lookup.request_uri) 
end 
def response 
    http.request(request) 
end 
end 

Bien qu'il marque correctement les échecs qu'il affiche le code pour tous se passe ou non code d'état: 200, comment puis-je obtenir le code d'état correct?

Controller:

class EnvironmentsController < ApplicationController 
    def status 
    app = App.find(params[:app_id]) 
    environment = app.environments.find{|env| env.id.to_s == params[:id]} 
    render json: {up:environment.up?} 
    end 
end 

Vue:

<%- App.all.each do |app| %> 
    <h3><%= app.name %></h3> 

    <ul class="app" data-app-id="<%= app.id %>"> 
    <%- app.environments.each do |environment| %> 
     <li class="env" data-env-id="<%= environment.id %>"> 
     <strong><%= environment.name %></strong> 
     <%= environment.url %><span class="status"> Loading. . . </span> 
     <!-- <i> Status Code: <% puts response.code %></i> </li> --> 
    <% end %> 
    </ul> 
+0

'Status.new ("http://example.com/unknown") .get_status' retourne' 404' – Stefan

+0

Avez-vous avez-vous un autre outil qui affiche un code de réponse différent de la même URL? –

+0

Donc, je reçois les URL d'une base de données et les passe un par un, comment pourrais-je implémenter la solution Status.new au code ci-dessus? –

Répondre

2

Vous n'utilisez pas votre classe Status. À votre avis response se réfère à la réponse actuelle.

Ainsi, au lieu de:

Status Code: <% puts response.code %> 

Essayez:

Status Code: <%= Status.new(environment.url).get_status %> 
+0

Parfait! Merci beaucoup –

Questions connexes