Question

Je crée un webservice et je veux stocker la source sur GitHub et exécutez l'application sur Heroku. Je ne l'ai pas vu mon scénario exact adressé partout sur le net à ce jour, donc je vais demander ici:

Je veux avoir la structure de répertoire suivant:

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

Dans ce qui précède, le projet correspond à http://github.com/myuser/project , et my_rails_app est le code qui devrait être poussé à Heroku. Ai-je besoin d'une branche distincte pour l'application des rails, ou est-il un moyen plus simple que je suis absent?

Je suppose que pourrait vivre dans my_rails_app, mais les rails README vit déjà mes fichiers non-rails liés au projet et il semble incohérent de l'écraser. Cependant, si je le laisse, ma page GitHub pour l'application de rails contiendra le readme rails, ce qui n'a pas de sens.

Et aussi ... J'ai essayé de mettre juste comme décrit ci-dessus et en cours d'exécution

git push heroku

à partir du dossier principal du projet. Bien sûr, Heroku ne sait pas que je veux déployer le sous-dossier:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
Était-ce utile?

La solution

Voici une solution simple qui peut ou peut ne pas fonctionner pour vous.

  • Créer deux projets sur GitHub. Un projet devrait être juste l'application Rails (à savoir de tout à l'intérieur du répertoire d'applications Rails). L'autre projet devrait être tout en dehors du répertoire d'applications Rails.

  • Ajoutez le projet application Rails comme git-sous-module au sein du projet "conteneur".

  • Vous pouvez maintenant ajouter Heroku comme une télécommande sur le référentiel de l'application Rails séparément et pousser à Heroku. Heroku acceptera la poussée parce qu'elle est juste une application Rails avec les répertoires et les fichiers attendus.

Autres conseils

Une solution pour la situation Heroku (et non le fichier README):

Si vous utilisez la nouvelle Heroku Cedar (je crois qu'il était pas disponible lorsque vous avez demandé à votre question) puis vos processus (comme le processus serveur rails) commencent à l'aide de Foreman . Ainsi, vous pouvez placer un Procfile dans le répertoire github racine qui ressemble à ceci:

web:     my_rails_app/script/runserver.sh

Et my_rails_app/script/runserver.sh pourrait alors être un simple

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT

Localement, vous devez également créer un fichier appelé .env (notez le. Au début), qui contient

PORT=3000

Ce fichier est lu par contremaître et pour définir des variables d'environnement de sorte que le port est défini lorsque vous exécutez foreman start sur votre machine (à partir du répertoire racine github, où le Procfile est). Le serveur prend en charge Heroku du fichier .env sur votre Dyno. Le grand avantage est que vous pouvez configurer plusieurs processus sur le dyno de cette façon!

écraser juste le fichier README par défaut de Rails. Il n'y a aucune raison de le garder autour. Mettez vos autres choses liées à la gestion de projet dans le répertoire doc. Alors que vous avez certainement des raisons valables de vouloir mettre en place la façon dont vous avez fait, vous êtes juste créer un casse-tête pour vous-même en allant à l'encontre convention, et il est probablement ne vaut pas l'avantage.

Je voudrais ajouter tout sous /my_rails_app au dépôt git Heroku. Ensuite, ajoutez GitHub comme tout à distance et ajouter sous /project au dépôt GitHub. Ensuite, vous pouvez pousser l'application Rails à Heroku (de /my_rails_app) et pousser le projet complet GitHub (de /project).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top