I found the problem. Apparently Rake was looking for an environment variable DATABASE_URL (which I had set to postgres) and this takes precedence over the database.yml file. Once I deleted the environment variable, everything works fine.
rake about database adapter inconsistent with database.yml
-
30-06-2023 - |
Question
In database.yml
(rails-generated default file):
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
When running rake about
, I have this error:
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded.
Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by
ActiveRecord).
If I add the pg
gem, then rake about
gives this output:
About your application's environment
Ruby version 2.1.0-p0 (x86_64-darwin13.0)
RubyGems version 2.2.2
Rack version 1.5
Rails version 4.1.0
JavaScript Runtime Node.js (V8)
Active Record version 4.1.0
Action Pack version 4.1.0
Action View version 4.1.0
Action Mailer version 4.1.0
Active Support version 4.1.0
Middleware Rack::Sendfile, ActionDispatch::Static, Rack::Lock, # <ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007f8043154a30>, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, Rack::Head, Rack::ConditionalGet, Rack::ETag
Environment development
Database adapter postgresql
Database schema version 0
Any idea why this is happening? I want to use the sqlite3 adapter.
Solution
OTHER TIPS
In database.yml
change adapter: sqlite3
to adapter: postgresql
You would also need to specify:
encoding: unicode
database: yourapp_development
pool: 5
username: your_username
password: your_password
If it is a new app that you are playing around with, run the rails new generator again with: rails new appname -d postgresql
. This will create the app with the postgres adapter.
In your case:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
development:
<<: *default
database: yourapp_development
username: your_username
password: your_password
test:
<<: *default
database: yourapp_test
username: your_username
password: your_password
production:
<<: *default
database: yourapp_production
username: your_username
password: your_password`
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow