Ich versuche, Apache dazu zu bringen, meine Ruby-Dateien zu interpretieren, aber ich verstehe nicht, wie es geht. Ich beschäftige mich momentan nicht mit Rails, nur mit Ruby. Was ich beim Googeln gefunden habe, verwirrt mich nur. Irgendein Rat?
Ich versuche, Apache dazu zu bringen, meine Ruby-Dateien zu interpretieren, aber ich verstehe nicht, wie es geht. Ich beschäftige mich momentan nicht mit Rails, nur mit Ruby. Was ich beim Googeln gefunden habe, verwirrt mich nur. Irgendein Rat?
Antworten:
Die häufigste Methode zum Ausführen von Ruby-Code in einer Webserver-Umgebung besteht darin, dass der Code eine Rack-Schnittstelle implementiert. Es ist eine sehr einfache API, mit der der Webserver mit Ihrer Ruby-Anwendung sprechen kann. Für Apache ist der häufigste Rack-Handler der Passagier (auch bekannt als mod_rails und mod_rack). Fast alle aktuellen Ruby-Web-Frameworks (wie Rails, Sinatra, Camping, ...) stellen über einen Rack-Handler eine Verbindung zum Webserver her. Sie können eines dieser Frameworks verwenden, aber Sie können auch Rack-Apps direkt ohne diese Frameworks schreiben. Alle Ruby-Anwendungsserver (Mischling, Thin, Einhorn, Regenbogen, ...) implementieren die Rack-Schnittstelle.
Eine andere Alternative wäre die Verwendung von (f) cgi, aber ich würde Ihnen raten, sich von dieser Route fernzuhalten, da die Schnittstelle und die Protokolle umständlich sind und nicht wirklich moderne Verwaltungsfunktionen bieten.
Sie können Ruby-Skripte mit schnellem CGI ausführen. Weitere Informationen finden Sie im fcgi-Projekt .
Ich habe schon seit einiger Zeit versucht, die einfache Antwort auf diese Frage zu finden , und herausgefunden, dass Sie nur das Ruby-Skript in das cgi-bin-Verzeichnis Ihres Webservers stellen und die entsprechende URL laden müssen. So habe ich beispielsweise in meiner Standardinstallation von CentOS 6.2 / httpd ein Skript namens hello.rb in / var / www / cgi-bin / abgelegt und dann http: //localhost/cgi-bin/hello.rb in my geladen Browser und es führte das Skript aus und zeigte mir, was zu STDOUT ging (dh von Puts usw.).
Hier wird jedes Mal, wenn die URL geladen wird, das Skript vollständig ausgeführt. Dies ist nicht ideal für einen Webserver mit hohem Volumen oder wenn die Geschwindigkeit entscheidend ist. So etwas wie fastCGI hält das Skript immer am Laufen, aber Sie müssen das Skript schreiben, um dies zu handhaben.
Ich hoffe, das hilft.
Versuchen Sie es mit modruby .
Invalid command 'RubyAddPath'
Ist das eine esoterische Sache, die niemand jemals tut? Ich bin überrascht, wie schwierig es ist, Ruby im Vergleich zu PHP mit Apache zum Laufen zu bringen.
AddHandler ruby-object .rbx
, LoadModule ruby_module /path/to/mod_ruby
, RubyRequire apache/ruby-run
, und RubyHandler Apache::RubyRun.instance
zu httpd.conf
sollte für eine einfache Konfiguration ausreicht.