# Ruby - Hello World Script - Serverfehler 500



## cameeel (1. Januar 2007)

Ich versuche mich gerade in Ruby einzuarbeiten und bekomme nicht mal das Hello World Script zum laufen.
Der Server bricht mit einem Error 500 beim Aufruf im Browser ab, warum?

```
#!/usr/bin/ruby 
puts "Content-Type: text/html;charset=utf-8\n"
puts "Hello, World"
```

Besten Dank,
cAm3eel.


----------



## Dr Dau (2. Januar 2007)

Hallo!

Hast Du das Script denn auch schon ausführbar gemacht?
Siehe auch: Ruby-Programmierung: Beispielprogramme

Gruss Dr Dau

[edit]
Rubyforen.de, gefunden bei Wikipedia (nur so als Tip für Dich und natürlich auch alle anderen  ).
[/edit]


----------



## cameeel (2. Januar 2007)

Was genau ist mit ausführbar machen gemeint? Ich hab halt die Rechte gesetzt, allerdings über ein FTP Programm, über die Konsole hats nicht geklappt...

Wenn ich die Datei über die Konsole ausführe funktioniert das auch alles, nur über den Browser klappts nicht, warum?

```
$ ruby .../cgi-bin/hello.rb
```

Der Thread hilft auch nicht weiter: http://rubyforen.de/viewtopic.php?t=3248

cAm3eel.


----------



## Matthias Reitinger (2. Januar 2007)

cAm3eel hat gesagt.:


> Was genau ist mit ausführbar machen gemeint? Ich hab halt die Rechte gesetzt, allerdings über ein FTP Programm, über die Konsole hats nicht geklappt...


Welche Rechte hast du gesetzt? Was gibt ls -l im entsprechenden Verzeichnis aus?


----------



## wadl58 (23. Februar 2007)

Hallo,

probiere es mal mit:
#!/usr/bin/ruby 
puts "Content-Type: text/html;charset=utf-8\n\n"
puts "Hello, World"​Warum?

In der HTTP-Antwort muss zwischen der Header-Informationen des Servers ("Content-Type: text/html;charset=utf-8") und dem tatsächlichen Inhalt der Nachricht ("Hello World") *eine Leerzeile* stehen!

Gruss
wadl58


----------



## Matthias Reitinger (23. Februar 2007)

wadl58 hat gesagt.:


> In der HTTP-Antwort muss zwischen der Header-Informationen des Servers ("Content-Type: text/html;charset=utf-8") und dem tatsächlichen Inhalt der Nachricht ("Hello World") *eine Leerzeile* stehen!


Das stimmt soweit, allerdings schickt ein Webserver keinen Error 500, wenn diese Leerzeile fehlt.

Grüße,
Matthias


----------



## wadl58 (24. Februar 2007)

Matthias Reitinger hat gesagt.:


> Das stimmt soweit, allerdings schickt ein Webserver keinen Error 500, wenn diese Leerzeile fehlt.
> 
> Grüße,
> Matthias



Falls ich die Leerzeile weglasse dann schickt Apache/2.0.59 (Standardkonfiguration) *Internal Server Error 500* zurück (*). Allerdings kann Apache so konfiguriert werden, dass Error 500 mit einer eigenen Fehlermeldung zurückgemeldet wird, was wohl meistens genutzt wird, d.h. Error 500 taucht dann nicht mehr auf, falls diese Leerzeile fehlt.

Gruß
Wolfgang

(*) Im apache_error_log File steht:
"... [error] [client ::1] malformed header from script. Bad header=<HTML>: hello.pl..."


----------



## cameeel (24. Februar 2007)

Hab den Fehler gefunden: Ich bin ja ein Windows-Benutzer, und aus diesem Grunde haben die Scripte noch immer die vor 30 Jahren abgeschafften Line-endings. Mit einem Converter konnte ich zu den UNIX-Lineendings konvertiern, und schon klappts.

Wikipedia:


> On many http://en.wikipedia.org/wiki/Unix systems, the dos2unix and unix2dos commands can be used to translate between ASCII CR+LF (DOS/Windows) and LF (Unix) newlines.



Is aber halt immer ziemlich blöd, jedes mal das Script zu konvertieren bevor man es aufrufen kann.....


----------



## Gumbo (25. Februar 2007)

Besorg dir einen ordentlichen Editor, bei dem sich das beliebig einstellen lässt.


----------



## cameeel (25. Februar 2007)

Eigentlich gefällt mir Aptana ganz gut... vielleicht kann man das da ja irgendwo umstellen, hab ich ncoh gar nicht geschaut.
Hast du sonst eine Empfehlung was einen Editor anbelangt?


----------

