ruby on rails - migrations - Rails error 500, "Lo sentimos, pero algo salió mal"
ruby heroku (7)
Después de tres noches sobre este problema y leyendo todas las publicaciones sobre esto, ¡tengo que hacer esta pregunta finalmente!
Quiero implementar la aplicación Rails más simple para Heroku:
rails new test_appli
cd test_appli
git init
git add .
git commit -m "initial commit"
heroku create
git push heroku master
Todo está bien, la aplicación funciona bien en Heroku. Después de eso, crearé una base de datos SQLite3:
rails generate scaffold User name:string email:string
rake db:migrate
Todo está bien en la máquina local. Puedo ver localhost:3000/users
bien. Entonces quiero poner el DB en Heroku. Primero modifico mi Gemfile:
group :production do
gem ''pg''
end
group :development, :test do
gem ''sqlite3''
end
Luego le envío todo a Heroku:
git init
git add .
git commit -m "with Database"
git push heroku master
heroku rake db:migrate
Entonces no hay errores en el lote, todo está bien, se envía el DB, pero la página heroku.com/users
da el error
Rails 500, "Lo sentimos, pero algo salió mal"
No sé más qué hacer. ¿Me puedes ayudar?
Sospecho que estás intentando implementar una aplicación de Rails 3.1 en la pila de bambú (heroku crea por defecto la pila de bambú 1.9.2 y no ejecuta Rails 3.1 de fábrica). La pila de Cedar se adapta mucho mejor a los sitios de Rails 3.1.
tratar
heroku create --stack cedar
cuando crees tu aplicación en Heroku y la repuntes. También tenga en cuenta que su comando de rake en Heroku se convertirá
heroku run rake db:migrate
No hagas el git init en el segundo conjunto de comandos; solo necesitas inicializar tu Git repo una vez.
Aparte de eso, esto se ve bien, ¿ve algún error en alguna parte?
¿Por qué usaría la gema pg
en su grupo de producción, pero la gema sqlite3
en su grupo de desarrollo? Me parece que su problema probablemente se deba al hecho de que está desarrollando una base de datos diferente y luego la está utilizando en el entorno de producción. Si yo fuera tú, me quedaría con uno, lo que facilitaría la depuración.
Si realmente quiere / necesita que la aplicación se ejecute lo antes posible, simplemente ejecútelo en producción con sqlite ... Gemfile:
gem ''rails''
gem ''sqlite3''
Además, una forma rápida de descubrir cuál es el error sería ejecutar heroku logs
desde la consola de Unix.
¿Qué versión de Rails? ¿Puedes intentar crear la aplicación que se ejecuta en la pila Cedar?
heroku create myapp --stack cedar
Dado que la aplicación se está ejecutando en cedro, debe modificar los comandos un poco, por ejemplo:
heroku run rake db:migrate
En cualquier caso, realmente necesita verificar sus registros, ya que su problema podría no estar relacionado con la base de datos, sino con los activos relacionados.
¿Tiene agregada la instancia de base de datos de 5 mb heroku compartida? Cuando creas tu aplicación heroku (en cedro) no necesariamente crea la base de datos automáticamente.
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
Cuando ves tu configuración heroku, no obtienes nada:
configuración heroku
airlift:projects $ heroku config --app testapp9
airlift:projects $
Para agregar una base de datos:
Complementos heroku: agregar base de datos compartida: 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 $
Entonces deberías poder migrar tu db.
Hacer:
heroku run rake db: schema: carga
Tuve el mismo problema. Funciona para mí después de git push heroku master
Hola, @redronin, gracias por ayudarme a encontrar la manera de conectarme a mi base de datos postgres en Heroku, sin embargo, como novato en Heroku y postgresql, tuve que aplicar ingeniería inversa a lo que era "bla". Así que creo que lo dividiría para ayudar a los demás a medida que me ayudas.
postgres: // [usuario]: [contraseña] @ [servername] .compute-1.amazonaws.com / [database]