2010-12-17 11 views
4

Wie würde ich darüber gehen? Ich versuchteWarum funktioniert dieser Befehl in diesem spezifischen Code nicht?

Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK 

aber ich erhalte dieses:

error: in `kind_of?': class or module required (TypeError)

Ich denke, es ist etwas mit meinem Code falsch ist, können Sie bitte einen Blick darauf werfen? Ich weiß es sehr chaotisch und ziemlich schlecht, ich bin ein Programmierstudent des ersten Jahres und ich lerne. Wenn Sie Verbesserungsvorschläge haben, lassen Sie es mich wissen!

Es gibt auch etwas, das mit den Enden darin verwirrt ist. Aus irgendeinem Grund bekomme ich einen unerwarteten Endfehler, wenn ich versuche, alle Defs zu beenden.

Hier ist mein Code im Kontext:

def begindownload 
    require 'net/http' 
    puts "Enter the URL of the site that you want to rip images from (use www.*website*.com/folder/file.html or other extension format):" 
    while @site = gets.chomp 
     puts "Querying " + @site 
     if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true 
      puts "Site is online!" 
     else 
      puts "Site is offline. Try again." 
     end 
    end 
end 
+0

Bitte posten Sie relevanteren Code, vor allem die 'require'-Anweisungen. Bitte helfen Sie uns auch, indem Sie Ihre Frage so formatieren, dass der Code lesbar ist. – BryanH

+0

Stackoverflow riss den Link sofort aus! http://pastebin.com/WzSawCwz – user451711

+0

Sie können den Code formatieren, indem Sie ihn auswählen und Strg-K drücken (oder ihn um vier Leerzeichen einrücken). –

Antwort

6

In Ihrem Code verwenden Sie die Zeile:

if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true 

Die == erste Net::HTTPOK == true-false ausgewertet zu verursachen ausgewertet wird. Der Rest der Aussage wird dann:

if Net::HTTP.new(@site).head('/').kind_of? false 

Verursachung Ihre TypeError.

Sie müssen == true nicht überprüfen, wenn Sie eine if Anweisung ausführen. Wenn die Aussage nach if zu true ausgewertet wird, wird die if ausgewertet. Überprüfen, ob eine boolesche == true sowieso als schlechte Form gilt.

+0

Die == True entfernt und es funktioniert einwandfrei. Danke, Mann! – user451711

0

Haben Sie .instance_of stattdessen versucht?

Verwandte Themen