web-dev-qa-db-de.com

ActiveRecord :: AdapterNotSpecified Datenbankkonfiguration gibt keinen Adapter an

Wenn ich heroku öffne, funktioniert meine Web-App gut, aber wenn ich Rails s (localhost) verwende, stoße ich auf diesen Fehler:

ActiveRecord::AdapterNotSpecified database configuration does not specify adapter

Warum ist das? 

Dies ist meine Datenbank.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

Und das ist mein 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

Damit Ihre App lokal arbeiten kann, müssen Sie:

  1. Installiere Postgresql auf deinem Rechner
  2. Erstellen Sie eine Datenbank für Ihre Entwicklungsanforderungen (nennen wir sie my_app_development)
  3. Ändern Sie Ihren database.yml in:

    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. rake db:migrate ausführen

14
Uri Agassi

Sie haben den Befehl nicht angezeigt, der diese Abfrage auslöst. Dies kann jedoch passieren, wenn Sie eine Zeichenfolge und kein Symbol übergeben. 

Zum Beispiel:

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

Wenn Sie jedoch ein Symbol verwenden, funktioniert es.

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

Ihre database.yml sollte ungefähr so ​​aussehen:

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"

Bearbeiten Sie den Namen der Entwicklungsdatenbank in Ihren lokalen Datenbanknamen . Bearbeiten Sie außerdem my_username und my_password in Ihren korrekten Datenbankbenutzernamen und das richtige Kennwort.

6
SreekanthGS

Löschen Sie Registerkarten nicht mehr, identifizieren Sie sich wie:

# 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:[email protected]/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: DBPOSTGRES
  password: <%= ENV['passpostgres'] %>
3
JAGJ jdfoxito

Falls Sie versuchen, activerecord ohne Rails zu verwenden, können Sie dieses Problem mit einer database.yml mit mehreren Umgebungseinstellungen feststellen. Sie müssen also den Umgebungsschlüssel wie folgt an das Konfigurations-Setup übergeben:

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

Warum verwenden Sie eine yml-Knotenreferenz in Ihrem database.yml?

Sie sollten so etwas haben:

#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

Update

Rails läuft mit einer Datenbank. Sie haben, um sich mit einer Datenbank zu verbinden, damit sie funktioniert, und dazu müssen Sie die verschiedenen Verbindungsdetails in database.yml

Um die richtigen Informationen zu definieren, müssen Sie wissen, dass Rails mit mehreren environments - development & production arbeitet, die am häufigsten verwendet werden

Damit Rails in Ihrer lokalen (Entwicklungs-) Umgebung eingesetzt werden kann, müssen Sie die richtigen Datenbankdetails definieren. Dies bedeutet, dass Sie eine Datenbank benötigen, zu der Sie eine Verbindung herstellen können - was normalerweise gemacht wird einen lokalen mysql/pgsql-Server einrichten

Unterm Strich verbinden Sie sich mit einer Datenbank mit:

  • hostname
  • username
  • passwort
  • db name

Sie müssen diese in Ihrer config/database.yml-Datei definieren

Wenn in Ihrer lokalen Umgebung ein Server ausgeführt wird, sieht die Datei database.yml folgendermaßen aus:

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