我看到很多关于部署到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 console找到我最新的博客条目(Blog.find(21))。 但是,数据似乎没有迁移到Heroku数据库,因为Heroku控制台返回
"ActiveRecord::RecordNotFound: Couldn't find Blog with id=21."
此外,“heroku logs”发现:
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)将是我博客的唯一编辑器。我刚刚创建了一个Editor模型来存储password_digest。
那么,为什么我的应用程序不在Heroku上部署?
任何反馈都将不胜感激。另外,如果您需要查看其他文件,请告诉我,我会附上。
非常感谢!
答案 0 :(得分:5)
运行db:migrate
仅运行数据库迁移,它不会将任何数据从开发环境复制到Heroku。您应该使用heroku db:push
将数据从本地环境推送到Heroku:
导入:推送到Heroku
如果要将现有数据库传输到Heroku,请使用
heroku db:push
。例如,您可能希望导入已在本地开发中使用的SQLite数据库或已在其他主机上部署的MySQL数据库。
这听起来像你想要的,所以尝试运行heroku db:push
。