Veréis me hice una cuenta en Dreamhost, accedí por SSH a mi cuenta y crée una aplicacion desde cero para comprobar que funciona antes de lanzarme a lo mas complicado.
He visto en muchos sitios que hablan de archivos como .htaccess o dispatch.fcgi o dispatch.rb en la carpeta Public, pero yo los tuve que crear manualmente.
Cuando voy a mi dominio, me muestra el mensaje "Welcome aboard". Elimino el index y cambio routes.rb para que redireccione al controlador que debe mostrarse. Pues cuando hago esto no muestra nada, solo me pone:
Index of /aplicacion/public
Name Last modified Size Description
Parent Directory -
404.html 14-Jan-2010 16:27 947
500.html 14-Jan-2010 16:27 948
dispatch.fcgi 14-Jan-2010 16:31 380
favicon.ico 14-Jan-2010 16:27 0
images/ 14-Jan-2010 16:27 -
javascripts/ 14-Jan-2010 16:27 -
robots.txt 14-Jan-2010 16:27 204
stylesheets/ 14-Jan-2010 16:27 -
Y listo. He preguntado al servicio tecnico de dreamhost y no me dicen nada que no haya hecho ya, he chateado con ellos y no me han contestado..
No se qué mas hacer.
Si necesitais mas datos preguntarme
Hola,
Ese «Index of /aplicacion/public» en vez de tu aplicación Rails significa que Apache está sirviendo el directorio como listado de ficheros normal, en vez de pasarle las peticiones a dispatch.fcgi para que Rails las procese. El archivo dispatch.fcgi existiendo en la carpeta no basta por sí solo, hace falta un .htaccess que le diga explícitamente a Apache que redirija ahí las peticiones que no correspondan a un fichero estático real:
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
La lógica de esas reglas: si la URL pedida corresponde a un fichero que existe de verdad en el disco (-f), Apache lo sirve directamente (por eso lo de «public» se llama así, para ficheros estáticos). Si no existe como fichero real, la petición se redirige a dispatch.fcgi, que es quien arranca Rails y decide qué controlador/acción debe responder según tu routes.rb.
Si tu .htaccess ya tenía algo parecido y sigue sin funcionar, en Dreamhost específicamente hay un segundo punto a revisar: en el panel de control, la asociación de FastCGI/Passenger para ese dominio tiene que estar configurada correctamente para el tipo de aplicación (Rails con FastCGI, en tu caso), no basta con subir los ficheros por SSH, el panel necesita saber que ese dominio sirve una aplicación Ruby y no HTML estático.
Un apunte histórico, para que no te vuelvas loca buscando más documentación de esto: el despliegue por FastCGI con dispatch.fcgi es el método clásico de Rails 1.x/2.x, hoy en día (con Rails moderno) se despliega con Passenger, Puma o directamente contenedores Docker, sin nada parecido a dispatch.fcgi. Si sigues con esta versión de Rails por alguna razón concreta, la documentación específica de despliegue FastCGI en Dreamhost de aquella época es la que mejor te va a servir, no las guías genéricas de Rails más recientes.
Marta
