关于这个问题的三个晚上并阅读了关于这个的所有帖子,我最后不得不问这个问题!
我想将最简单的Rails应用程序部署到Heroku:
rails new test_appli
cd test_appli
git init
git add .
git commit -m "initial commit"
heroku create
git push heroku master
一切都没问题,该应用程序在Heroku上运行良好。之后,我将创建一个SQLite3数据库:
rails generate scaffold User name:string email:string
rake db:migrate
本地计算机上一切正常。我可以很好地看到localhost:3000/users
。然后我想将数据库放在Heroku上。首先我修改我的Gemfile:
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
然后我将整件事发送给Heroku:
git init
git add .
git commit -m "with Database"
git push heroku master
heroku rake db:migrate
然后批处理中没有错误,一切正常,数据库已发送,但页面heroku.com/users
给出了错误
Rails 500,“我们很抱歉,但出了点问题”
我不知道该怎么做。你能救我吗?
答案 0 :(得分:7)
我怀疑你正在尝试将Rails 3.1应用程序部署到竹栈(heroku创建默认为1.9.2竹栈,并且不会开箱即用Rails 3.1)。 Cedar堆栈更适合Rails 3.1站点 -
试
heroku create --stack cedar
在Heroku上创建应用程序并重新启动时。另请注意,Heroku上的rake命令将变为
heroku run rake db:migrate
答案 1 :(得分:3)
做:
heroku run rake db:schema:load
我有同样的问题。在git push heroku master
之后它适用于我答案 2 :(得分:0)
不要在第二组命令中执行git init - 你只需要初始化一次Git repo。
除此之外,这看起来很好 - 你在任何地方看到任何错误吗?
答案 3 :(得分:0)
为什么要在生产组中使用pg
gem,而在开发组中使用sqlite3
gem?在我看来,您的问题可能是由于您正在使用不同的数据库进行开发,然后您在生产环境中使用。如果我是你,我会坚持一个,这将使调试更容易。
如果你真的想/需要让应用程序尽快运行,那么只需在生产中使用sqlite运行它...... Gemfile:
gem 'rails'
gem 'sqlite3'
此外,快速找出错误的方法是从unix控制台运行heroku logs
。
答案 4 :(得分:0)
哪个版本的Rails? 你能尝试创建在Cedar堆栈上运行的应用程序吗?
heroku create myapp --stack cedar
鉴于应用程序正在雪松上运行,您需要稍微修改一下命令,例如:
heroku run rake db:migrate
在任何情况下,您确实需要签出日志,因为您的问题可能与数据库无关,但资产相关。
答案 5 :(得分:0)
您是否添加了heroku共享5mb数据库实例? 当您创建heroku应用程序(在雪松上)时,它不一定会自动创建数据库。
airlift:projects $ heroku create --stack cedar testapp9
Creating testapp9... done, stack is cedar
http://testapp9.herokuapp.com/ | git@heroku.com:testapp9.git
airlift:projects $ heroku addons --app testapp9
logging:basic
releases:basic
当你查看你的heroku配置时,你什么都得不到:
heroku config
airlift:projects $ heroku config --app testapp9
airlift:projects $
添加数据库:
heroku addons:添加共享数据库: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:blah@blah.compute-1.amazonaws.com/blah
SHARED_DATABASE_URL => postgres://blah:blah@blah.compute-1.amazonaws.com/blah
airlift:projects $
然后你应该能够迁移你的数据库。
答案 6 :(得分:0)
嘿@redronin谢谢你帮我找到了一条连接到Heroku的postgres数据库的方法,但是作为Heroku和postgresql的新手,我不得不对“blah”进行逆向工程。所以我想我会在你帮助我的时候打破它来帮助别人。
postgres的:// [用户]:[口令] @ [服务器] .compute-1.amazonaws.com / [数据库]