以下是错误消息:
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:47:in `resolve_hash_connection'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
...
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.13/lib/rails/application.rb:103:in `require_environment!'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.13/lib/rails/application.rb:297:in `block (2 levels) in initialize_tasks'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `eval'
/Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `<main>'我的database.yml文件:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000我的Gemfile:
source 'https://rubygems.org'
gem "therubyracer"
gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
gem "twitter-bootstrap-rails"
gem 'jquery-rails'
gem 'devise'
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
gem 'mini_magick'
gem "rmagick"
gem "carrierwave"
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'发布于 2013-10-18 04:26:16
我在一个有点复杂的项目中解决了一个类似的问题。不确定它是否直接相关,但我将此作为调试问题的方法发布,这可能会有所帮助。
在我的例子中,我有以下场景:
RAILS_ENV=production时发生。当我做RAILS_ENV=development的时候,它起作用了。奇怪的是,当我将database.yml中的production条目更改为production2并使用RAILS_ENV=production2运行该命令时,它起作用了。下面是我用来检测这个问题的方法:
vim /Users/davidzabner/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb
(或者回溯告诉你问题所在的地方)。
然后,我在代码中找到了包含以下行的位置:
def resolve_hash_connection(spec) # :nodoc:
spec = spec.symbolize_keys
raise(AdapterNotSpecified, "database configuration does not specify adapter") unless spec.key?(:adapter)并将其更改为:
def resolve_hash_connection(spec) # :nodoc:
spec = spec.symbolize_keys
# Debug printing
puts "*" * 80, spec.inspect, "*" * 80
raise(AdapterNotSpecified, "database configuration does not specify adapter") unless spec.key?(:adapter)然后我重新运行命令,在我的例子中是bundle exec rails c production。
通过这样做,我意识到Rails并不像我想的那样寻找production条目。它正在寻找一个名为abc_production的不同条目,由于我前面提到的多个数据库连接,因此在我的项目中需要该条目。在该特定服务器上,有人忘记将该abc_production条目添加到database.yml中。添加条目解决了问题。
我相信只有在RAILS_ENV=production时才会发生这种情况,因为在environments/production.rb中我有config.eager_load = true,这意味着Rails会立即将应用程序和类加载到内存中,并可能尝试建立这些类中定义的所有数据库连接(其中一个是abc_production)。
希望这对有类似情况的人有所帮助。如果您没有使用多个连接,请尝试通过更改connection_specification.rb来调试问题,并查看它是否为您提供了线索。
发布于 2014-01-29 05:00:39
我现在不知道你到底想做什么。
目前,当我尝试使用ruby-2.10运行< rails c -e production >时,我得到了相同的错误。
“`resolve_hash_connection”:数据库配置未指定适配器(ActiveRecord::AdapterNotSpecified)
当我运行< rails c production >时,一切都正常。
也许这对某些人有帮助
发布于 2014-05-13 16:43:32
我在staging环境中遇到了类似的问题,我做到了:
之后,我在那里工作得很好。
https://stackoverflow.com/questions/17579012
复制相似问题