【发布时间】:2014-11-09 20:11:37
【问题描述】:
注意:这是我第一次配置 Rails 应用程序、部署 Rails 应用程序并设置数据库。我很可能正在做一些明显愚蠢的事情。
我有一个使用 postgres 9.3 的工作 Rails 应用程序设置。我可以运行迁移,在本地运行我的服务器并在本地获取正在运行的应用程序。
我将我的代码推送到 heroku 并在某一时刻运行。现在,当我运行 heroku 控制台时,它显示我的数据库完全是空的,我不知道如何重新创建它。
我正在使用 pg gem 的 v 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”
基本上不管我跑什么,我在papertrail中得到的只是:
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 我得到
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。我一直在搞砸它,破坏和创建用户以及破坏和创建表,但我让一切都恢复到本地的功能状态。不知道这是否能起到某种作用。
【问题讨论】:
标签: ruby-on-rails heroku heroku-postgres