0

我看到很多关于部署到 Heroku 问题的帖子,但我无法找到适合我的案例的解决方案。任何输入将不胜感激。

我有一个在本地运行良好的博客应用程序。但是,当我部署到 Heroku 时,我正在返回“对不起,但出了点问题”。

我拥有的宝石是:

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

group :production do
  gem 'pg', '0.12.2'
end

我采取的步骤是:

git add.
git commit -am "latest update"
git push
git push heroku
rake db:migrate
heroku run rake db:migrate

我的 SQLite3 数据库迁移得很好,因为我可以通过 rails 控制台找到我最新的博客条目 (Blog.find(21))。但是,数据似乎没有迁移到 Heroku 数据库,因为 Heroku 控制台返回

"ActiveRecord::RecordNotFound: Couldn't find Blog with id=21."

此外,“heroku 日志”发现:

Completed 500 Internal Server Error in 50ms
NoMethod Error (undefined method 'blogs' for nil:NilClass):
  app/controllers/static_pages_controller.rb:8:in 'home'

这是否意味着我的 static_pages_controller 中可能存在问题,或者它只是因为数据库未正确迁移而返回错误?

下面是我的 static_pages 控制器,它在我的本地服务器上运行良好。

class StaticPagesController < ApplicationController
  def home
    if signed_in?
      @blog = current_editor.blogs.build
    end

    @editor = Editor.first
    @blogs = @editor.blogs.paginate(page: params[:page])
  end
end

注意:我在上面使用 Editor.first,因为我(即 editor_id:1)将是我博客的唯一编辑。我刚刚创建了一个编辑器模型来存储密码摘要。

那么,为什么我的应用程序没有部署在 Heroku 上?

对于任何反馈,我们都表示感谢。另外,如果您需要查看其他文件,请告诉我,我会附上。

非常感谢!

4

1 回答 1

5

运行db:migrate只运行数据库迁移,它不会将任何数据从您的开发环境复制到 Heroku。您应该使用heroku db:push将数据从本地环境推送到 Heroku:

导入:推送到 Heroku

heroku db:push当您希望将现有数据库传输到 Heroku 时使用。例如,您可能想要导入您在本地开发中一直使用的 SQLite 数据库或您已在另一台主机上部署的 MySQL 数据库。

这听起来像你想要做的,所以尝试运行heroku db:push

于 2012-06-22T05:36:30.047 回答