Rails错误500,“我们很抱歉,但出了点问题”

时间:2011-11-08 22:19:52

标签: ruby-on-rails ruby postgresql sqlite heroku

关于这个问题的三个晚上并阅读了关于这个的所有帖子,我最后不得不问这个问题!

我想将最简单的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,“我们很抱歉,但出了点问题”

我不知道该怎么做。你能救我吗?

7 个答案:

答案 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 / [数据库]