heroku迁移默默地失败

时间:2014-11-09 20:11:38

标签: ruby-on-rails heroku heroku-postgres

注意:这是我第一次配置rails应用程序,部署rails应用程序和设置数据库。我很可能会做一些明显愚蠢的事情。

我有一个使用postgres 9.3的工作轨道应用程序设置。我可以运行迁移,在本地运行我的服务器并在本地运行应用程序。

我把我的代码推到了heroku,但有一次它跑了。现在,当我运行heroku控制台时,它显示我的数据库完全是空的,我无法弄清楚如何重新创建它。

我使用的是pg gem的0.17.1。

以下是我采取的步骤。

1)创建了我的database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: fr_development
  pool: 5
  username: user
  password: password

test:
  adapter: postgresql
  encoding: unicode
  database: fr_test
  pool: 5
  username: user
  password: password

production:
  url: <%= ENV['DATABASE_URL'] %>

1.5)设置我的heroku帐户并安装papertrail

2)确保我的schema.rb和所有迁移都在源代码管理下。

3)跑了“git push heroku master”

4)运行“heroku run db:drop db:setup --app app”或者有时“heroku pg:reset DATABASE_URL”

5)运行“heroku run rake db:migrate --app app”

6)运行“heroku restart --app app”

基本上无论我跑什么,我所能得到的所有内容都是:

Nov 09 11:19:50 app heroku/api:  Starting process with command `bundle exec rake db:drop db:create db:migrate RAILS_ENV=production` by email@gmail.com 
Nov 09 11:19:53 app heroku/run.3003:  Awaiting client 
Nov 09 11:19:53 app heroku/run.3003:  Starting process with command `bundle exec rake db:drop db:create db:migrate RAILS_ENV=production` 
Nov 09 11:19:53 app heroku/run.3003:  State changed from starting to up 
Nov 09 11:19:54 app heroku/run.3003:  Process exited with status 0 
Nov 09 11:19:54 app heroku/run.3003:  State changed from up to complete 

然后,如果我点击我的服务器,我会得到一个错误,我的某个关系不存在。

如果我“heroku运行控制台”并尝试运行我的任何表格,它会说它们不存在。

有一点我没什么关系,并且很难找到资源来学习bin目录的正确配置。我没有碰过

我的bin / bundle是完全空的

#!bin/rails

begin
  load File.expand_path("../spring", __FILE__)
rescue LoadError
end
APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'
require 'rails/commands'

#bin/rake
begin
  load File.expand_path("../spring", __FILE__)
rescue LoadError
end
require_relative '../config/boot'
require 'rake'
Rake.application.run

#bin/spring
unless defined?(Spring)
  require "rubygems"
  require "bundler"

  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^    spring \((.*?)\)$.*?^$/m)
    ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
    ENV["GEM_HOME"] = ""
    Gem.paths = ENV

    gem "spring", match[1]
    require "spring/binstub"
  end
end

如果我运行heroku pg:info i get

HEROKU_POSTGRESQL_ONYX_URL (DATABASE_URL)
Plan:        Hobby-dev
Status:      Available
Connections: 1/20
PG Version:  9.3.3
Created:     2014-11-06 04:08 UTC
Data Size:   6.5 MB
Tables:      0
Rows:        0/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported

最后一件可能相关的事情我一直在纸质追踪中看到这个堆栈跟踪,虽然我不确定它是否就是我重置应用程序时发生的事情:

[2014-11-10 03:39:58] FATAL SignalException: SIGTERM 
Nov 09 19:39:58 app app/web.1:      /app/vendor/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:170:in `select' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:170:in `block in start' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:32:in `start' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:160:in `start' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start' 
Nov 09 19:39:58 app app/web.1:      /app/vendor/bundle/ruby/2.1.0/gems/railties-4.1.5/lib/rails/commands/server.rb:69:in `start'

我真的试图调试这个,但我没有想法。任何帮助将不胜感激。

其他说明:我在此之前第一次设置了postgres。我正在四处乱逛,很多时候会破坏并创建用户并摧毁和创建表格但我在本地恢复了一切功能状态。不知道是否可以某种方式发挥作用。

1 个答案:

答案 0 :(得分:1)

只是为了确保,如果你还没有,首先运行:

heroku run rake db:migrate

如果那样的话,那就不行了:

heroku pg:reset

随后是heroku run rake db:再次迁移。

顺便说一句,我认为Heroku不允许您放弃或创建。因此他们实现了pg:reset。

我发现devcenter doc提到了删除和创建权限以及在这里使用pg:reset: https://devcenter.heroku.com/articles/rake