Man kann schon einen bunten Nachmittag damit verbringen herauszufinden warum die schöne neue Rails Applikation nicht auf dem Linux Server laufen will der eigens dafür eingerichtet wurde. Alles was Rails zu sagen hat ist die Standardmeldung im Falle eines 500er Serverfehlers:
Application error
Rails application failed to start properly"
Das Apache Log meldet Sachen wie:
FastCGI: server "/www/blah/current/public/dispatch.fcgi" (pid 32163) terminated by calling exit with status '255'
FastCGI: can't start server "/www/blah/current/public/dispatch.fcgi" (pid 32163), execle() failed: No such file or directory
FastCGI: comm with server "/www/blah/current/public/dispatch.fcgi" aborted: idle timeout (60 sec)
FastCGI: incomplete headers (0 bytes) received from server "/www/blah/current/public/dispatch.fcgi"
Die Ursache für dafür hat sich die perfekte Tarnung zugelegt. Ein Auszug aus /public/dispatch.fcgi
#!c:/ruby/bin/ruby
#
# You may specify the path to the FastCGI crash log (a log of unhandled
# exceptions which forced the FastCGI instance to exit, great for debugging)
# and the number of requests to process before running garbage collection.
#
Und? Genau! Es ist der Shebang #!c:/ruby/bin/ruby
Obwohl auf Windows Systemen weitgehend wertlos, packt Rails den Pfad zum Ruby Interpreter dazu, was politisch sicher vollkommen korrekt ist. Also der Shebang einmal angepasst: #!/usr/local/bin/ruby und schon rollt Rails wieder.