2011-11-08 17 views
6

Dopo tre sere su questo problema e leggendo tutti i post su questo, devo finalmente porre questa domanda!Errore Rails 500, "Siamo spiacenti, ma qualcosa è andato storto"

voglio distribuire più semplici Rails app per Heroku:

rails new test_appli 
cd test_appli 
git init 
git add . 
git commit -m "initial commit" 
heroku create 
git push heroku master 

Tutto OK, l'applicazione funziona bene su Heroku. Successivamente, creerò un database SQLite3:

rails generate scaffold User name:string email:string 
rake db:migrate 

Tutto OK sulla macchina locale. Posso vedere bene localhost:3000/users. Quindi voglio mettere il DB su Heroku. Per prima cosa ho modificare il mio Gemfile:

group :production do 
    gem 'pg' 
end 

group :development, :test do 
    gem 'sqlite3' 
end 

Poi ho inviare il tutto a Heroku:

git init 
git add . 
git commit -m "with Database" 
git push heroku master 
heroku rake db:migrate 

allora non ci sono errori nel lotto, tutto è OK, il DB viene inviato, ma la pagina heroku.com/users dà l'errore

Rails 500, "Siamo spiacenti, ma qualcosa è andato storto"

Non so più cosa fare. Mi potete aiutare?

+2

Avete controllato il vostro file di log con 'Heroku logs' dal terminale? – Dty

+0

certo, non ha detto niente ... la risposta è sotto. Grazie – user1036495

risposta

0

Non eseguire init git nel secondo set di comandi: è sufficiente inizializzare il repository Git una sola volta.

Diverso da ciò, questo sembra soddisfacente - stai riscontrando errori ovunque?

+0

Grazie per il vostro aiuto. Il problema era la versione di rails con lo stack. Con le rotaie 3, impilate solo il cedro! – user1036495

0

Perché dovresti utilizzare la gemma pg nel tuo gruppo di produzione, ma la gemma sqlite3 nel tuo gruppo di sviluppo? Mi sembra che il tuo problema sia probabilmente dovuto al fatto che stai sviluppando con un database diverso da quello che stai utilizzando nell'ambiente di produzione. Se fossi in te, mi limiterei a uno, il che renderebbe molto più facile il debug.

Se davvero si vuole/bisogno per ottenere l'applicazione funzionante il prima possibile, poi basta eseguirlo in produzione con SQLite ... Gemfile:

gem 'rails' 
gem 'sqlite3' 

Inoltre, un modo rapido per capire che cosa è l'errore sarebbe eseguire heroku logs dalla console unix.

+0

Ciao, Heroku non può eseguire sqlite3 ma trasformare il DB in pg. Devi farlo così nel file gemma. Il problema era la versione di rails con lo stack. Con le rotaie 3, impilate solo il cedro! – user1036495

+0

In realtà, Heroku può eseguire sqlite3. Ho un'applicazione rails3 in esecuzione su Heroku che utilizza sqlite3. Stiamo usando questa pila: bamboo-ree-1.8.7. – Batkins

0

Quale versione di Rails? Puoi provare a creare l'applicazione in esecuzione nello stack Cedar?

heroku create myapp --stack cedar 

Dato l'applicazione è in esecuzione sul cedro è necessario modificare i comandi un po ', ad esempio:

heroku run rake db:migrate 

In ogni caso si ha realmente bisogno di checkout vostro log, perché il problema non potrebbe anche essere correlati al database, ma relativi alle risorse.

+0

Thaaannnks !!!!! Questa era la soluzione! 1000 volte, grazie! – user1036495

7

Sospetto che si stia tentando di distribuire un'applicazione Rails 3.1 nello stack di bambù (heroku crea i valori predefiniti nello stack di bambù 1.9.2 e non esegue Rails 3.1 out of the box.). Lo stack Cedar è molto più adatto a Rails 3.1 siti -

cercano

heroku create --stack cedar 

quando si crea l'applicazione su Heroku e repush in su. Nota anche che il tuo comando rake su Heroku diventerà

heroku run rake db:migrate 
+0

Thaaannnks !!!!! Questa era la soluzione! 1000 volte, grazie! – user1036495

+0

Questa è la risposta corretta. Grazie! – user9507

0

Hai aggiunto l'istanza del database 5mb condiviso con heroku? Quando si crea l'app heroku (su cedro), non crea necessariamente il database automaticamente.

airlift:projects $ heroku create --stack cedar testapp9 
Creating testapp9... done, stack is cedar 
http://testapp9.herokuapp.com/ | [email protected]:testapp9.git 

airlift:projects $ heroku addons --app testapp9 
logging:basic 
releases:basic 

Quando si visualizza il config Heroku, si ottiene nulla:

Heroku config

airlift:projects $ heroku config --app testapp9 
airlift:projects $ 

Per aggiungere un database:

addons Heroku: aggiungi database condiviso: 5mb

airlift:projects $ heroku addons:add shared-database:5mb --app testapp9 
-----> Adding shared-database:5mb to testapp9... done, v3 (free) 
airlift:projects $ heroku config 
No app specified. 
Run this command from an app folder or specify which app to use with --app <app name> 
airlift:projects $ heroku config --app testapp9 
DATABASE_URL  => postgres://blah:[email protected]/blah 
SHARED_DATABASE_URL => postgres://blah:[email protected]/blah 
airlift:projects $ 

Poi si dovrebbe essere in grado migrare vostro db.

+0

Ciao, grazie mille per il tuo aiuto. In realtà, come diceva John Beynon, dovevo solo spingerlo su una pila di cedri a causa della versione di rotaie. Funziona così! Ma apprezzo davvero il tuo aiuto! Grazie – user1036495

3

Do:

Heroku run rake db: schema: carico

Ho avuto lo stesso problema. Funziona per me dopo aver mandato il suo maestro heroku

0

Ehi @redronin grazie per avermi aiutato a trovare un modo per connettermi al mio database postgres su Heroku, tuttavia come newbie per Heroku e postgresql ho dovuto decodificare ciò che "blah" era . Quindi immagino che lo farei per aiutare gli altri come tu mi hai aiutato.

postgres: // [utente]: [password] @ [servername] .compute-1.amazonaws.com/[database]

Problemi correlati