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

Ruby on rails 将Rails应用程序(SQLite3)部署到Heroku(PostgreSQL)的问题,ruby-on-rails,sqlite,postgresql,heroku,Ruby On Rails,Sqlite,Postgresql,Heroku,我看到很多关于部署到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 "lat

我看到很多关于部署到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日志”还发现:

这是否意味着我的静态页面控制器中可能存在问题,或者只是因为数据库未正确迁移而返回错误

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

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
class StaticPagesController
注意:我使用的是Editor.first,因为我(即Editor_id:1)将是我博客的唯一编辑。我刚刚创建了一个编辑器模型来存储密码摘要

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

如有任何反馈,将不胜感激。另外,如果您需要查看其他文件,请告诉我,我将附上


非常感谢

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

导入:推送到Heroku

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


这听起来像是你想要做的,试着运行
heroku db:push

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

导入:推送到Heroku

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


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

你能确认你正在从正确的本地数据库中推送数据吗?也就是说,确保你没有像一个空的生产数据库或其他东西一样向Heroku推进?也许数据推送的输出会有用?谢谢SizzlePants。看来这就是问题所在。然而,即使数据库是空的,我仍然不知道为什么会收到“我很抱歉,但出了问题”的消息。只要列迁移正确,Heroku部署(尽管站点为空)不应该工作吗?Heroku不会处理任何问题。我希望您的视图/代码可能会调用假定对象的方法可用的调用。。。。但实际上并不是因为nto有任何数据。一个例子是,如果你有一个你希望是字符串的东西,然后像my_str.capitalialize。。。如果我的_str是一个nil对象或者甚至不是一个字符串。。。你会出错的。啊,我明白了。这是有道理的。谢谢您能确认您正在从正确的本地数据库推送数据吗?也就是说,确保你没有像一个空的生产数据库或其他东西一样向Heroku推进?也许数据推送的输出会有用?谢谢SizzlePants。看来这就是问题所在。然而,即使数据库是空的,我仍然不知道为什么会收到“我很抱歉,但出了问题”的消息。只要列迁移正确,Heroku部署(尽管站点为空)不应该工作吗?Heroku不会处理任何问题。我希望您的视图/代码可能会调用假定对象的方法可用的调用。。。。但实际上并不是因为nto有任何数据。一个例子是,如果你有一个你希望是字符串的东西,然后像my_str.capitalialize。。。如果我的_str是一个nil对象或者甚至不是一个字符串。。。你会出错的。啊,我明白了。这是有道理的。谢谢你就是那个人。我不知道你怎么回答这么多问题。。。这么快。这很可能是正确的答案。谢谢,穆太短了。我运行了gem安装程序,然后是heroku db:push,但出现了一个错误。“HTTP代码:500。Taps服务器错误:PGError:错误:时区位移超出范围:”2012-06-06 12:00:00.000000+5894604000。“我看到这是从config/database.yml推送的。我刚刚注意到我的database.yml文件说,“生产:适配器:sqlite,数据库:db/production.sqlite3,池:5,超时:5000。”“。我想我应该把这些改成postgresql?如果是这样的话,我还需要更改池和超时数字吗?@umezo:您如何在SQLite中获得
+5894604000
时区?那没有多大意义。如果通过
sqlite3
CLI工具访问时间戳,时间戳会是什么样子“我不知道我怎么会在这个时区结束。。。Time.now在rails控制台上返回=>2012-06-22 02:59:03-400。这是有道理的,因为我以前把时间定在东海岸时间。@umezo:看看这里,看起来和你遇到的问题一样:你就是那个人。我不知道你怎么回答这么多问题。。。这么快。这很可能是正确的答案。谢谢,穆太短了。我运行了gem安装程序,然后是heroku db:push,但出现了一个错误。“HTTP代码:500.Taps服务器错误:PGError:错误:时区位移超出范围:”2012-06-06 12:00:00.000000+5894604000
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