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.

Was it helpful?

Solution

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.

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
scroll top