Domanda

Sto creando un servizio web e voglio archiviare il sorgente su github ed eseguire l'app su heroku.Finora non ho visto il mio scenario esatto affrontato da nessuna parte in rete, quindi lo chiederò qui:

Voglio avere la seguente struttura di directory:

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

In quanto sopra, il progetto corrisponde a http://github.com/myuser/project, e my_rails_app è il codice che dovrebbe essere inviato a heroku.Ho bisogno di un ramo separato per l'app Rails o c'è un modo più semplice che mi manca?

Immagino che i miei file non-rails relativi al progetto potrebbero risiedere in my_rails_app, ma il README dei rail risiede già lì e sembra incoerente sovrascriverlo.Tuttavia, se lo lascio, la mia pagina github per l'app rails conterrà il file readme di rails, il che non ha senso.

Anche ...Ho provato a configurarlo come descritto sopra e ad eseguirlo

git push heroku

dalla cartella principale del progetto.Ovviamente, heroku non sa che voglio distribuire la sottocartella:

-----> Heroku receiving push
 !     Heroku push rejected, no Rails or Rack app detected.
È stato utile?

Soluzione

Ecco una soluzione semplice che può o non può funzionare per voi.

  • Creare due progetti su GitHub. Un progetto dovrebbe essere solo l'applicazione Rails (vale a dire tutto all'interno della cartella app Rails). L'altro progetto dovrebbe essere tutto al di fuori della cartella app Rails.

  • Aggiungere il progetto applicazione Rails come git-modulo nell'ambito del progetto "contenitore".

  • Ora è possibile aggiungere Heroku come un telecomando sul app repository Rails separatamente e spingerlo a Heroku. Heroku accetterà la spinta, perché è solo un'applicazione Rails con le directory ei file attesi.

Altri suggerimenti

Una soluzione per la situazione Heroku (non il file README):

Se si sta utilizzando la nuova Heroku Cedar (credo che non era disponibile quando per la prima volta ha chiesto la tua domanda), allora i processi (come il processo del server rotaie) aVVIARE con Foreman . Così, è possibile inserire un Procfile nella directory radice github che assomiglia a questo:

web:     my_rails_app/script/runserver.sh

E poi my_rails_app/script/runserver.sh potrebbe essere un semplice

#!/bin/sh

cd my_rails_app
bundle exec rails server -p $PORT

A livello locale, si dovrebbe anche creare un file chiamato .env (notare il. All'inizio), che contiene

PORT=3000

Questo file viene letto da Foreman e utilizzato per impostare le variabili di ambiente in modo che la porta sia impostata quando si esegue foreman start sulla vostra macchina (dalla directory root GitHub, dove il Procfile risiede). Il server di Heroku si prende cura del file .env sul banco prova. Il grande vantaggio è che si può impostare più processi al banco in questo modo!

Basta sovrascrivere il valore predefinito di Rails README file.Non c'è motivo di tenerlo in giro.Metti gli altri tuoi contenuti relativi alla gestione del progetto nel file doc directory.Sebbene tu abbia certamente valide ragioni per volerlo impostare come hai fatto, ti stai solo creando mal di testa andando contro le convenzioni, e probabilmente non ne vale la pena.

Vorrei aggiungere tutto sotto /my_rails_app al repository git Heroku. Quindi aggiungere GitHub come un telecomando e aggiungere tutto sotto /project al repository GitHub. Poi si può spingere l'applicazione Rails per Heroku (da /my_rails_app) e spingere il progetto completo per GitHub (da /project).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top