Pregunta

Estoy creando un servicio web y quiero almacenar la fuente en github y ejecutar la aplicación en heroku.Hasta ahora no he visto mi escenario exacto abordado en ningún lugar de la red, así que lo preguntaré aquí:

Quiero tener la siguiente estructura de directorios:

/project
  .git
  README <-- project readme file
  TODO.otl <-- project outline
  ... <-- other project-related stuff
  /my_rails_app
     app
     config
     ...
     README <-- rails' readme file 

En lo anterior, el proyecto corresponde a http://github.com/myuser/project, y my_rails_app es el código que se debe enviar a heroku.¿Necesito una rama separada para la aplicación Rails o me falta una forma más sencilla?

Supongo que los archivos no relacionados con Rails relacionados con mi proyecto podrían vivir en my_rails_app, pero el archivo README de Rails ya se encuentra allí y parece inconsistente sobrescribirlo.Sin embargo, si lo dejo, mi página de github para la aplicación Rails contendrá el archivo Léame de Rails, lo cual no tiene sentido.

También ...Intenté configurarlo como se describe arriba y ejecutar

git push heroku

desde la carpeta principal del proyecto.Por supuesto, Heroku no sabe que quiero implementar la subcarpeta:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
¿Fue útil?

Solución

Aquí hay una solución simple que puede o no puede trabajar para usted.

  • Cree dos proyectos en Github. Uno de los proyectos debe ser sólo la aplicación Rails (es decir, todo dentro del directorio de aplicación Rails). El otro proyecto debería ser todo lo que fuera del directorio de aplicación Rails.

  • Agregue el proyecto aplicación Rails como git-submódulo dentro del proyecto "contenedor".

  • Ahora puede agregar Heroku como un control remoto en la aplicación repositorio de rieles por separado y empujarlo a heroku. Heroku aceptará el empuje, ya que es sólo una aplicación Rails con los directorios y archivos esperados.

Otros consejos

Una solución para la situación de Heroku (no el archivo README):

Si estás usando el nuevo Cedro Heroku (Creo que no estaba disponible cuando hizo su pregunta por primera vez) entonces sus procesos (como el proceso del servidor Rails) comienzan a usar Capataz.Así, puedes colocar un Procfile en el directorio raíz de github que se ve así:

web:     my_rails_app/script/runserver.sh

Y luego my_rails_app/script/runserver.sh podría ser un simple

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT

Localmente, también deberías crear un archivo llamado .env (nota la .al principio), que contiene

PORT=3000

Este archivo lo lee el capataz y lo usa para establecer variables de entorno para que el puerto se establezca cuando se ejecuta foreman start en su máquina (desde el directorio raíz de github, donde se encuentra el Procfile).El servidor Heroku se encarga del archivo .env en su banco de pruebas.¡La gran ventaja es que puedes configurar múltiples procesos en el banco de pruebas de esa manera!

Sólo sobrescribir el archivo README por defecto de Rails. No hay ninguna razón para mantener a su alrededor. Ponga su otra materia relacionada con la gestión de proyectos en el directorio doc. Aunque es cierto que tiene razones válidas para querer configurarlo de la manera que lo hizo, sólo estás creando un dolor de cabeza por sí mismo yendo contra las convenciones, y es probable que no vale la pena el beneficio.

Yo añadiría todo por debajo /my_rails_app al repositorio git Heroku. A continuación, añadir GitHub como un control remoto y añadir todo por debajo /project al repositorio GitHub. A continuación, puede empujar la aplicación Rails a Heroku (de /my_rails_app) y empujar el proyecto completo a GitHub (de /project).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top