web-dev-qa-db-fra.com

La configuration de la base de données ActiveRecord :: AdapterNotSpecified ne spécifie pas d'adaptateur

Lorsque j'utilise heroku open, mon application Web fonctionne correctement, mais lorsque je me sers de Rails s (localhost), je rencontre cette erreur:

ActiveRecord::AdapterNotSpecified database configuration does not specify adapter

Pourquoi est-ce? 

C'est mon database.yml

# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5

Et voici mon gemfile:

source 'https://rubygems.org'


gem 'pg'

gem 'bootstrap-sass', '~> 3.1.1'

# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '4.0.3'

# Use SCSS for stylesheets
gem 'sass-Rails', '~> 4.0.0'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-Rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :Ruby

# Use jquery as the JavaScript library
gem 'jquery-Rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/Rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/Rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:Rails generates the API under doc/api.
  gem 'sdoc', require: false
end

group :production do
  gem 'Rails_12factor', '0.0.2'
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-Ruby', '~> 3.1.2'

# Use Unicorn as the app server
# gem 'Unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]
28
user3408293

Pour que votre application fonctionne localement, vous devez:

  1. Installez Postgresql sur votre machine
  2. Créez une base de données pour vos besoins de développement (appelons-la my_app_development)
  3. Changez votre database.yml en:

    default: &default
      adapter: postgresql
      encoding: unicode
      # For details on connection pooling, see Rails configuration guide
      # http://guides.rubyonrails.org/configuring.html#database-pooling
      pool: 5
    
    development:
      <<: *default
      database: my_app_development
    
  4. exécuter rake db:migrate

14
Uri Agassi

Vous n'avez pas affiché la commande à l'origine de cette requête, mais cela peut arriver si vous passez une chaîne et non un symbole 

Par exemple:

irb(main):001:0> ActiveRecord::Base.establish_connection("#{Rails.env}")
ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter

Mais si vous utilisez un symbole, cela fonctionnera.

irb(main):001:0> ActiveRecord::Base.establish_connection("#{Rails.env}".to_sym)
=> #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x007f2f484a32a0 #....
8
yekta

Votre database.yml devrait ressembler à ceci:

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: 5
  username: my_username
  password: my_password

development:
  <<: *default
  database: "development_database_name"

test:
  <<: *default
  database: "test_database_name"

production:
  <<: *default
  database: "production_database_name"

Modifiez nom_données_développement avec le nom de votre base de données locale . Modifiez également nom_utilisateur et mot_passe avec votre nom d'utilisateur et votre mot de passe corrects.

6
SreekanthGS

Supprimer les onglets rien de plus, ident parfait, tels que:

# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  Host: 192.168.0.121
  username: postgres
  password: passpostgres

development:
  <<: *default
  database: DBPOSTGRES
 # 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:
  <<: *default
  database: DBPOSTGRES
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: DBPOSTGRES
  password: <%= ENV['passpostgres'] %>
3
JAGJ jdfoxito

Si vous essayez d'utiliser activerecord sans Rails, vous pouvez rencontrer ce problème avec un fichier database.yml avec plusieurs configurations d'environnement. Vous aurez donc besoin de passer la clé d’environnement dans la configuration comme ceci:

DB_ENV ||= 'development'
connection_details = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection(connection_details[DB_ENV])
0
lacostenycoder

Pourquoi utilisez-vous une référence de nœud yml dans votre database.yml?

Vous devriez avoir quelque chose comme ça:

#config/database.yml
development:
  adapter: mysql2
  encoding: utf8
  database: ****
  pool: 5
  username: ****
  password: ****
  Host: ***.***.***.*** #-> only for third party db server

production:
  adapter: postgresql
  encoding: utf8
  database: ****
  pool: 5
  username: ****
  password: ****
  Host: ***.***.***.*** #-> only for third party db server

Mettre à jour

Rails utilise une base de données. Vous avez vous connecter à une base de données pour le faire fonctionner. Pour ce faire, vous devez définir les différents détails de connexion dans database.yml

Pour définir la bonne information, vous devez comprendre que Rails fonctionne selon plusieurs environments - development & production étant les deux plus utilisés.

Pour que Rails fonctionne dans votre environnement (de développement) local, vous devez définir les détails de la base de données appropriés. Cela signifie que vous avez besoin d’une base de données pour vous connecter - ce qui est généralement fait pour la configuration d’un serveur mysql/pgsql local

En bout de ligne, vous vous connectez à une base de données en utilisant:

  • nom d'hôte
  • username
  • mot de passe
  • nom db

Vous devez les définir dans votre fichier config/database.yml

Si vous avez un serveur en cours d'exécution dans votre environnement local, votre fichier database.yml ressemblera à ceci:

#config/database.yml
development:
  adapter: mysql2
  encoding: utf8
  database: db_name
  pool: 5
  username: username
  password: password
0
Richard Peck