2010-06-21 25 views
20

Tengo un repositorio "super" en GitHub que contendrá varias aplicaciones que me gustaría implementar en Heroku. Aquí hay un ejemplo de mi repositorio.Implementar un subdirectorio en Heroku

/app 
    /.git 
    /website <-- would like to deploy this to Heroku 

Cuando trato de empujar con el siguiente comando:

$ git push heroku master 

me sale el siguiente error:

Heroku push rejected, no Rails or Rack app detected. 

¿Cómo implemento un subdirectorio a Heroku?

Respuesta

22

Esto se puede lograr colocando un config.ru en su directorio raíz que le dice a Heroku dónde encontrar su aplicación. Por ejemplo, con los carriles 3, probar un config.ru como este en el directorio raíz:

WEBSITE_SUBDIR = 'website' 
require "#{WEBSITE_SUBDIR}/config/environment" 
run YourApplicationName::Application 

Y en los carriles 2.x, necesitará algo como esto:

WEBSITE_SUBDIR = 'website' 
require "#{WEBSITE_SUBDIR}/config/environment" 
use Rails::Rack::LogTailer 
use Rails::Rack::Static 
run ActionController::Dispatcher.new 
+1

Adam - gracias por su respuesta. He decidido no implementar un repositorio completo para heroku porque no quiero implementar los directorios adicionales, pero esto parece una solución limpia. –

+1

Jamie: el truco de config.ru funcionó, hasta que llegó el momento de mezclar la base de datos, no pude encontrar la forma de tener mi aplicación en un subdirectorio y hacer que el DB funcionara. ¿Has hecho ambas cosas? Cuando moví la aplicación al nivel superior funcionó ... –

+0

Estoy en Rails 3.1.3 y esto, desafortunadamente, no funcionó para mí, a menos que me haya equivocado en el camino. – TeckniX

2

¿Qué opinas sobre la creación de un repositorio git local en/app/website, y el uso de Git Hooks para que cuando te comprometas, también comprometa el código de tu sitio web?

La respuesta básica, desde mi punto de vista, es que querrás un repositorio de git en el nivel del sitio web, no en el nivel principal. Todo depende de su punto de vista. ¿Quiere que el/sitio web sea su propio repositorio con/app usando un submódulo para/sitio web? (Esa es la forma en que iría)

+1

Jesse, parece que por investigaciones posteriores que tener que crear otro repositorio es la única opción. Podrías unirte a los repos utilizando submódulos, pero cuál sería el punto entonces. Si tiene un ejemplo del uso de la opción ganchos web, puede ser útil para muchos. –

2

Recientemente encontré este mismo problema en un proyecto que usa el marco Supersónico de AppGyver y una aplicación Heroku.

Nuestra aplicación Supersonic vivía en la raíz, por lo que no era una opción tener a Heroku viviendo allí también. Al final movimos nuestra aplicación Heroku a un subdirectorio llamado web/. Ahora implementamos en Heroku usando:

git subtree push --prefix web heroku master 
Cuestiones relacionadas