问题将Rails应用程序(SQLite3)部署到Heroku(PostgreSQL)

ume*_*ezo 0 sqlite postgresql ruby-on-rails heroku

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

我有一个在本地运行良好的博客应用程序.但是,当我部署到Heroku时,我回来了"我很抱歉,但出了点问题".

我拥有的宝石是:

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

group :production do
  gem 'pg', '0.12.2'
end
Run Code Online (Sandbox Code Playgroud)

我采取的步骤是:

git add.
git commit -am "latest update"
git push
git push heroku
rake db:migrate
heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)

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

"ActiveRecord::RecordNotFound: Couldn't find Blog with id=21."
Run Code Online (Sandbox Code Playgroud)

此外,"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'
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的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
Run Code Online (Sandbox Code Playgroud)

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

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

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

非常感谢!

mu *_*ort 5

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

导入:推送到Heroku

使用heroku db:push时,您希望现有的数据库转移到Heroku的.例如,您可能希望导入已在本地开发中使用的SQLite数据库或已在其他主机上部署的MySQL数据库.

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