Wie kann ich Ruby-Skripte über Apache ausführen (nicht unbedingt mit Rails)?

8

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?

Jason Swett
quelle

Antworten:

3

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.

Holger Just
quelle
1

Sie können Ruby-Skripte mit schnellem CGI ausführen. Weitere Informationen finden Sie im fcgi-Projekt .

Vagmi Mudumbai
quelle
1

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.

Glockenspiel
quelle
0

Versuchen Sie es mit modruby .

alvosu
quelle
Ich versuchte es. Es hat nichts getan und wenn es irgendwelche Unterlagen gibt, haben sie es großartig versteckt.
Jason Swett
Das hat auch nicht funktioniert. 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.
Jason Swett
Fügen Sie "LoadModule ruby_module" path_to_mod / mod_ruby.so "hinzu
alvosu
Hinzufügen AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-run, und RubyHandler Apache::RubyRun.instancezu httpd.confsollte für eine einfache Konfiguration ausreicht.
Chris S