web-dev-qa-db-ja.com

ActiveRecord :: AdapterNotSpecifiedデータベース構成はアダプターを指定しません

Herokuを使用すると、Webアプリは正常に動作しますが、Rails s(localhost)を使用すると、このエラーが発生します。

ActiveRecord::AdapterNotSpecified database configuration does not specify adapter

どうしてこれなの?

これは私の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

そして、これは私の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]
30
user3408293

アプリをローカルで動作させるには、次のことを行う必要があります。

  1. Postgresqlのインストール マシンに
  2. データベースを作成する 開発のニーズに合わせて(それをmy_app_developmentと呼びましょう)
  3. database.ymlを次のように変更します。

    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を実行します

14
Uri Agassi

このクエリの原因となるコマンドは表示しませんでしたが、シンボルではなく文字列を渡すと、これが発生する可能性があります。

例えば:

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

ただし、シンボルを使用する場合は機能します。

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

Database.ymlは次のようになります。

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"

Development_database_nameをローカルデータベース名に編集します。また、my_usernameとmy_passwordを編集して、正しいdbユーザー名とパスワードに変更します。

6
SreekanthGS

次のようなタブを削除します。

# 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

Railsなしでactiverecordを使用しようとしている場合、複数の環境設定を持つdatabase.ymlでこの問題が発生する可能性があります。環境設定キーを環境設定に渡す必要があります。このような:

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

database.ymlymlノード参照 を使用しているのはなぜですか?

次のようなものが必要です。

#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

更新

Railsはデータベースを使用して実行されます。 have dbに接続して機能させるには、database.ymlでさまざまな接続の詳細を定義する必要があります。

正しい情報を定義するには、Railsがいくつかのenvironments-developmentproductionが最も使用される2つで動作することを認識する必要があります

ローカル(開発)環境で作業するRailsを取得するには、正しいデータベースの詳細を定義する必要があります。つまり、接続するデータベースが必要です-通常は settingローカルmysql/pgsqlサーバーのセットアップ

一番下の行は、次を使用してデータベースに接続することです:

  • ホスト名
  • username
  • パスワード
  • データベース名

これらをconfig/database.ymlファイルで定義する必要があります

ローカル環境でサーバーを実行している場合、database.ymlファイルは次のようになります。

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