2011-09-03 13 views
9

¿Cómo configuro una aplicación de Rails 3.1 para que se ejecute en un directorio específico como "/ r"?Cómo implementar la aplicación Rails 3.1 en un subdirectorio

me trataron en config.ru:

map '/r' do 
    run Debtor::Application 
end 

pero que acaba de regresar "no encontrado:/r"

Para conseguir que funcione tuviera que incluir todas las rutas en un ámbito:

scope '/r' do 
    #routes 
end 

y añadir la siguiente línea a config/applcation.rb

config.assets.prefix = "/r/assets" 

y mover mis archivos jquery ui css de/stylesheets a/r/stylesheets.

esto parece demasiado complicado. ¿No hay una manera más fácil? y ¿por qué no funciona mi configuración config.ru?

mi caso de uso es tener un backend ajax alimentado por rieles para un servidor de wordpress.

Respuesta

6

¿se está ejecutando con pasajero?

Entonces RailsBaseURI es probablemente lo que usted desea.

https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri

Si no se ejecuta bajo pasajeros, por favor, actualice su pregunta para mostrar lo que se despliegan bajo.

+0

gracias por la respuesta. sí, estoy usando pasajero. Estoy buscando una solución más simple. – Peder

+0

¿Más simple que 1 línea en su archivo de configuración de Apache? No estoy seguro de que puedas ponerte más simplón que eso. Lo siento, confundido. – Doon

+0

¿Cómo puedo hacer esto con solo una configuración de 1 línea? Me parece que también necesito crear un enlace simbólico desde el subtrayecto en la raíz del documento al directorio público del proyecto de rieles. – Peder

3

Así es cómo implementar una aplicación Rails 3.1 en un subdirectorio en Apache, reemplazando a config.action_controller.relative_url_root que ya no existe.

En config/routes.rb:

scope 'my_subdir' do 
    # all resources and routes go here 
end 

En el archivo de configuración de Apache:

Alias /my_subdir /var/www/my_subdir/public 
<Location /my_subdir> 
    SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir" 
    PassengerAppRoot /var/www/my_subdir 
</Location> 

y debería funcionar, incluyendo apuntando automáticamente todos sus activos a /my_subdir.

+0

¿Esto realmente funciona para activos y archivos en el directorio público? – Peder

+0

Funcionará cuando sus activos estén en la carpeta 'app/assets'. Pero también debería funcionar para activos y archivos en el directorio público debido a la palabra clave 'Alias' que señala la carpeta directamente hacia abajo en su carpeta pública. Por favor, déjeme saber si funciona. –

4

Lo que funcionó para mí fue crear el enlace simbólico para el suburio (/ info) a la carpeta 'pública' de la aplicación (configuración bajo otro usuario en mi servidor,/home/otheruser/current/public).

ln -s /home/myapp/current/public /home/mysite/public_html/info 

Entonces inserta esta configuración dentro de la entrada VirtualHost para el sitio:

Alias /info /home/myapp/current/public 
<Location /info> 
    PassengerAppRoot /home/myapp/current 
    RackEnv production 
    RackBaseURI /info 
</Location> 

No hay rutas con ámbito, ninguna configuración prefijo activo.

+0

¡La mejor respuesta todavía! Me gustaría volver a esta respuesta si pudiera :) – Ali

+0

Derecha .. Esta es la solución más limpia. Gracias :) – n3rve

Cuestiones relacionadas