¿Cómo puedo ejecutar scripts Ruby a través de Apache (no necesariamente usando Rails)?

8

Estoy tratando de hacer que Apache interprete mis archivos Ruby, pero no entiendo cómo hacerlo. No estoy preocupado por Rails en este momento, solo Ruby. Lo que he encontrado en Google solo me confunde. ¿Algún consejo?

Jason Swett
fuente

Respuestas:

3

La forma más común de ejecutar código ruby ​​en un entorno de servidor web es hacer que el código implemente una interfaz de rack. Es una API muy simple que permite al servidor web hablar con su aplicación ruby. Para Apache, el manejador de rack más común es el pasajero (también conocido como mod_rails y mod_rack). Casi todos los marcos web actuales de ruby ​​(como rails, sinatra, camping, ...) se conectan al servidor web mediante un controlador de rack. Puede usar uno de esos marcos, pero también puede escribir aplicaciones en rack directamente sin ellas. Todos los servidores de aplicaciones ruby ​​(mongrel, thin, unicorn, rainbows, ...) implementan la interfaz de rack.

Otra alternativa sería usar (f) cgi, pero le aconsejaría que se mantenga alejado de esa ruta, ya que la interfaz y los protocolos son incómodos y realmente no proporcionan instalaciones de administración modernas.

Holger Just
fuente
2

He estado tratando de encontrar la respuesta simple a esta pregunta por un tiempo, y descubrí que todo lo que tiene que hacer es poner el script ruby ​​en el directorio cgi-bin de su servidor web y cargar la URL correspondiente. Entonces, por ejemplo, en mi instalación predeterminada de CentOS 6.2 / httpd, puse un script llamado hello.rb en / var / www / cgi-bin / y luego cargué http: //localhost/cgi-bin/hello.rb en mi navegador y ejecutó la secuencia de comandos y me mostró lo que fue a STDOUT (es decir, de Putts, etc.).

Lo que sucede aquí es que cada vez que se carga la URL, el script se ejecuta por completo. Esto no es ideal para un servidor web de alto volumen o donde la velocidad es crucial, por lo que algo como fastCGI mantiene el script ejecutándose siempre, pero debe escribir el script para manejar eso.

Espero que ayude.

carillonador
fuente
1

Puede ejecutar scripts ruby ​​con cgi rápido. Mira el proyecto fcgi para más información.

Vagmi Mudumbai
fuente
0

Prueba modruby .

alvosu
fuente
Lo intenté. No hizo nada y si hay alguna documentación, hicieron un gran trabajo al ocultarla.
Jason Swett
Eso tampoco funcionó. Invalid command 'RubyAddPath'¿Es esto una especie de cosa esotérica que nadie hace? Me sorprende lo difícil que es hacer que Ruby trabaje con Apache en comparación con PHP.
Jason Swett
Agregue "LoadModule ruby_module" path_to_mod / mod_ruby.so "
alvosu
La adición de AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-run, y RubyHandler Apache::RubyRun.instancea httpd.confdebería ser suficiente para una configuración simple.
Chris S