我跟着Rails Tutorial一直到关联点。
这是shell输出:
jrhorn424 at hook in ~/Learning/rails/rails-tutorial/demo_app on master
$ heroku run rake db:migrate
Running rake db:migrate attached to terminal... up, run.2
### Snip ###
Migrating to CreateUsers (20120310145100)
Migrating to CreateMicroposts (20120311052021)
rake aborted!
database configuration does not specify adapter
Tasks: TOP => db:schema:dump
(See full trace by running task with --trace)
我咨询了Heroku quick start,并做了一些谷歌搜索。我怀疑问题出在config/database.yml
,因为在我的开发环境中,sqlite3
充满了对adapter = uri.scheme
adapter = "postgresql" if adapter == "postgres"
的引用。但是,在服务器上,同一文件包括以下行:
heroku run rake db:migrate
通过已部署的应用程序添加数据成功,但运行source 'https://rubygems.org'
gem 'rails', '3.2.2'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development do
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.4'
gem 'coffee-rails', '3.2.2'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer'
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.0'
group :production do
gem 'pg', '0.12.2'
end
仍然失败。
这是我的Gemfile:
{{1}}
答案 0 :(得分:3)
对我来说,当我尝试在生产中打开rails控制台时,我遇到了这个错误,
当我给出时,
bundle exec rails c RAILS_ENV=production
它会抛出错误
`resolve_hash_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified)
但是当我给出时它会起作用,
RAILS_ENV=production bundle exec rails c
答案 1 :(得分:2)
我建议您删除数据库:
bundle exec rake db:drop:all
如果您要在heroku上主持,请继续使用postgres来处理所有环境。删除sqlite gem并只包括
gem 'pg'
靠近Gemfile的顶部。
执行a:
bundle
bundle exec rake db:create
bundle exec rake db:migrate
尝试再次提交并推送(您知道该怎么做)。
如果这不起作用,请告诉我。
PS,这是我的database.yml文件的样子:
# PostgreSQL v0.8.x
# gem install pg
development:
adapter: postgresql
encoding: unicode
host: localhost
database: health_development
pool: 5
username: volpine
password: password
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: postgresql
encoding: unicode
host: localhost
database: health_test
pool: 5
username: volpine
password: password
production:
adapter: postgresql
encoding: unicode
host: localhost
database: health_production
pool: 5
username: volpine
password: password
答案 2 :(得分:1)
我遇到了这个问题,发现手动设置RAILS_ENV对我来说很有用:
heroku run RAILS_ENV=production rake db:migrate
答案 3 :(得分:0)
当我跑heroku db:push
时,我得到一个taps error,导致我转而使用ruby 1.9.2。切换版本并启动新应用后,我不再收到来自heroku run rake db:migrate
的错误,一切都按预期工作。
更新:我刚收到通知,版本不匹配对db:migrate
无关紧要。对于db:push
来说这绝对重要,所以我不确定是什么问题。无论如何,当我使用相同的Gemfile和1.9.2初始化一个新的应用程序时,它可以工作。
答案 4 :(得分:0)
我遇到了同样的问题。它发生了,因为我从我的heroku应用程序中删除了RAILS_ENV环境变量,只留下了一个RACK_ENV环境变量。
添加RAILS_ENV =生产确实解决了问题:
heroku config:add RAILS_ENV=production --app XXXX-production
答案 5 :(得分:0)
Heroku不会查看你的database.yml文件,它会查看DATABASE_URL - 如果没有设置,或者里面有拼写错误,那么你就会收到错误。