¿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?

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.


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.



0

Prueba modruby .


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.