2014-04-09 10 views
7

In database.yml (file di default rotaie-generati):rake su adattatore database incoerente con database.yml

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 

Quando si esegue rake about, ho questo errore:

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). 

Se aggiungo il pg gemma, quindi rake about fornisce questo risultato:

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 

Qualche idea sul perché questo sta accadendo? Voglio usare l'adattatore sqlite3.

+0

Puoi condividere i contenuti completi di database.yml? –

+0

In database.yml il tuo adattatore sta ancora specificando sqlite3, cambialo in postgresql come sotto – andreofthecape

+0

Sto cercando di usare sqlite3 come adattatore, non postgres. Rake sta dicendo che sto usando l'adattatore Postgres, per qualche motivo. – sysofwan

risposta

9

ho trovato il problema. Apparentemente Rake stava cercando una variabile d'ambiente DATABASE_URL (che avevo impostato su postgres) e questo ha la precedenza sul file database.yml. Una volta eliminata la variabile di ambiente, tutto funziona correttamente.

+0

Ehi, sto avendo lo stesso problema. Potresti darmi qualche altro dettaglio su come hai risolto questo problema (se ricordi ancora)? – Syk

0

In database.yml cambiamento adapter: sqlite3-adapter: postgresql

Si sarebbe anche necessario specificare:
encoding: unicode
database: yourapp_development
pool: 5
username: your_username
password: your_password

Se si tratta di una nuova applicazione che si sta giocando con, eseguire nuovamente il nuovo generatore di rotaie con: rails new appname -d postgresql. Questo creerà l'app con l'adattatore postgres.

Nel tuo caso:

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` 
+0

Il tuo suggerimento funziona, ma sto cercando di usare sqlite3 come adattatore, non come postgres. Grazie! – sysofwan

+0

Per favore pubblica il tuo Gemfile – andreofthecape