Funktionsvergleich & Erweiterungen des Ruby Link-Checkers (v1.0.1 → v1.0.2)
Änderungsprotokoll – Link-Checker (Ruby)
Ausgangspunkt
Die ursprüngliche Version des Link-Checkers:
- Arbeitet sequentiell (eine URL nach der anderen)
- Verwendet
HEAD
-Anfragen (optionalGET
) - Gibt die Ergebnisse in die Konsole und eine
results.csv
aus - Keine Fehlerwiederholung, keine parallele Verarbeitung
- Kein Einfluss auf Timeout über CLI
🛠 Erweiterungen und Anpassungen
✅ 1. Parallele Verarbeitung (Concurrency)
Änderung:
- Einsatz von
concurrent-ruby
mitFixedThreadPool
- URLs werden parallel geprüft (statt sequentiell)
Nutzen:
- Deutlich schnellere Verarbeitung großer URL-Mengen
✅ 2. Fehlerwiederholung bei Timeouts
Änderung:
- Automatischer Wiederholungsversuch bei fehlgeschlagenen Verbindungen (standardmäßig 2 Versuche)
Nutzen:
- Robuster gegenüber Netzwerkfehlern oder temporären Ausfällen
✅ 3. CLI-Parameter für Timeout
Änderung:
- Dritter Parameter beim Skriptaufruf erlaubt die Festlegung des Timeout-Werts in Sekunden
Nutzen:
- Flexiblere Anpassung an Netzwerkbedingungen oder Zielserver
✅ 4. Dauer-Messung pro URL
Änderung:
- Ermittlung der Laufzeit (in Sekunden) jeder URL-Prüfung
- Ausgabe in CSV-Datei
Nutzen:
- Bewertung der Server-Reaktionszeiten möglich
✅ 5. Verbesserte CSV-Ausgabe
Änderung:
- CSV enthält zusätzlich die Dauer der Anfrage in Sekunden
Beispiel:
URL,Status,Beschreibung,Dauer (s)
https://example.com,200,OK,0.37
✅ 6. Farbliche Ausgabe beibehalten
Keine Änderung:
- Bestehende farbliche Kennzeichnung der Statusklassen bleibt erhalten (colorize)
✅ 7. Fehlerausgaben differenzierter
Änderung:
- Fehlerausgaben zeigen zusätzlich die Laufzeit bis zum Fehler
- Bessere Diagnose bei unerreichbaren Zielen
💻 Neuer Skriptaufruf
ruby link_checker.rb urls.txt get 10
- urls.txt: Liste der zu prüfenden URLs
- get: HTTP-Methode (get oder head)
- 10: Timeout in Sekunden
📁 Ergebnisdatei
Die Datei results.csv enthält:
- URL
- HTTP-Status
- Status-Beschreibung
- Antwortdauer (in Sekunden)
📦 Neue Abhängigkeiten
gem install concurrent-ruby
Vergleichstabelle: Link-Checker Version 1 vs. Version 2
Funktion / Merkmal | Version 1 (ursprünglich) | Version 2 (erweitert) |
---|---|---|
Verarbeitung | Sequentiell (eine URL nach der anderen) | Parallel mit FixedThreadPool (concurrent-ruby) |
Fehlerwiederholung | Keine Wiederholungen bei Fehlern | Automatische Wiederholung (z. B. 2 Versuche bei Timeout/Fehler) |
Timeout konfigurierbar | Fest codiert auf 5 Sekunden | Frei wählbar über CLI-Parameter (z. B. 10 für 10s) |
HTTP-Methode wählbar | HEAD oder GET über CLI | Gleich geblieben (HEAD oder GET über CLI) |
Dauer der Anfrage messen | Nicht vorhanden | Dauer jeder Anfrage wird in Sekunden gemessen |
CSV-Inhalte | URL, Statuscode, Nachricht | URL, Statuscode, Nachricht, Dauer (in Sekunden) |
Farbliche Konsolenausgabe | Ja, via colorize |
Ja, beibehalten |
Fehlerausgabe | Einfache Fehlermeldung | Fehlermeldung + Dauer bis Fehler |
Multithreading | Nein | Ja, durch concurrent-ruby |
Abhängigkeiten | colorize , net/http , csv , uri |
Zusätzlich: concurrent-ruby |
Skalierbarkeit | Langsam bei vielen URLs | Signifikant schneller bei großen URL-Mengen |
Aufruf über CLI | ruby script.rb urls.txt get |
ruby script.rb urls.txt get 10 (inkl. Timeout) |