rake db: create jette l’erreur «firebase database n’existe pas» avec postgresql

J’utilise rails 4.1.5 avec postgresql 9.1 sous Debian 7 et je ne suis pas en mesure de créer une firebase database dans mon environnement de développement. Quand je cours

bin/rake db:create 

Je reçois

 home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898:in `rescue in connect': FATAL: database "direct-dev" does not exist Run `$ bin/rake db:create db:migrate` to create your database (ActiveRecord::NoDatabaseError) from /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `connect' from ... 

J’essaie de créer la firebase database donc, naturellement, elle n’existe pas. Cependant les rails devraient le créer … Voici mon config / database.yml:

 default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: direct-dev 

Et voici une partie du journal postgresql:

 2014-09-01 19:30:40 CEST LOG: connection received: host=[local] 2014-09-01 19:30:40 CEST LOG: connection authorized: user=rs database=direct-dev 2014-09-01 19:30:40 CEST FATAL: database "direct-dev" does not exist 

Avez-vous des indications? Je suis là depuis plus d’une heure et je n’arrive toujours pas à comprendre pourquoi cela se produit …

Merci!

Rails 4.1 avec un préchargeur à ressort et

Les nouvelles applications Rails 4.1 seront livrées avec des binstubs “à ressort”. Cela signifie que bin / rails et bin / rake profiteront automatiquement des environnements de spring préchargés.

ce qui signifie que le bin/rake “ressuscité” tentera de précharger l’application, qui à son tour tentera d’exécuter les initilators entraînant le problème que vous rencontrez.

Pour réparer / contourner ce problème, vous devez exécuter les tâches de râteau de configuration initiale sans spring. Un moyen d’y parvenir est de l’exécuter avec bundler à la place:

 bundle exec rake db:create 

Vous pourriez essayer d’exécuter cette commande-

 bin/rake db:create RAILS_ENV=development 

Ou cette commande-

 bin/rake db:migrate RAILS_ENV=development 

J’ai trouvé le problème …

Cela a à voir avec les initialiseurs Rails: Rails semble charger tous les initialiseurs avant d’exécuter bin/rake db:create .

Et, dans cette application particulière, il existe quelques initialiseurs personnalisés qui dépendent d’un modèle ActiveRecord (qui, à son tour, dépend de la firebase database créée, disponible et de la table correspondante).

Par conséquent, rake ne parvient jamais à exécuter la tâche, il échoue lors de l’exécution des initialiseurs. J’aurais dû savoir si j’avais lu attentivement le journal complet des messages d’erreur. Ceci est le journal complet (voir ci-dessous, en gras, les lignes incriminées):

 /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:898:in `rescue in connect ': FATAL: firebase database" ds-dev " n'existe pas
 Exécutez `$ bin / rake db: create db: migrate` pour créer votre firebase database (ActiveRecord :: NoDatabaseError)
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `connect '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:568:in `initialize '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `new '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:435:in `new_connection '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:445:in `checkout_new_connection '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in
 dans /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:351:in `block in checkout '
 à partir de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:350:in `checkout '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection '
 à partir de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:541:in `resortingeve_connection '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:113:in `resortingeve_connection '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_handling.rb:87:in `connection '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/model_schema.rb:209:in `table_exists? '
 de /home/rs/pr/ds/app/models/property.rb:32:in `get ' 
  de /home/rs/pr/ds/config/initializers/custom/setup_mail.rb:3:in `'
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `load '
 à partir de /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `block in load '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:232:in `load_dependency '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:241:in `load '
 dans /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:648:in `block in load_config_initializer '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/notifications.rb:161:in `instrument '
 dans /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:647:in `load_config_initializer '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:612:in `block (2 levels) in '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in `each '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/engine.rb:611:in `block in '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in `instance_exec '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:30:in `run '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:55:in `block in run_initializers '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each '
 à partir de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:418:in `block (2 levels) dans each_strongly_connected_component_from '
 dans /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from '
 de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:417:in `block in each_strongly_connected_component_from '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in `each '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:44:in `tsort_each_child '
 dans /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in `call '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in `each_strongly_connected_component_from '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in `each '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in `call '
 à partir de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component '
 de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each '
 de /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/initializable.rb:54:in `run_initializers '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/railties-4.1.5/lib/rails/application.rb:300:ininitialiser!
 de /home/rs/pr/ds/config/environment.rb:5:in `'
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in `require '
 depuis /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in `block in require '
 dans /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:232:in `load_dependency '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.5/lib/active_support/dependencies.rb:247:in `require '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:92:in `preload '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:140:in `serve '
 à partir de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application.rb:122:in `run '
 de /home/rs/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `'
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require '
 depuis /home/rs/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require '
 de -e: 1: dans `'

Je vais travailler sur le refactoring du code, afin de se débarrasser des dépendances des modèles dans les initialiseurs (ce qui, j’en suis sûr, doit être une très mauvaise pratique).

A eu le même problème aujourd’hui (sous OS X).

Résolu avec:

 psql -U postgres CREATE ROLE rolename WITH CREATEDB LOGIN; 

Utilisez \du pour vérifier si elle est créée.

Utilisez \password rolename pour créer un mot de passe pour cet utilisateur / rôle .

Ensuite, vous pouvez configurer DB avec bundle exec rake db:migrate

Aucune des solutions n’a fonctionné pour moi, mais cela a fonctionné pour moi.

 $ brew services list $ brew services restart postgresql 

Je vois deux problèmes, comme is04 l’a souligné, vous avez probablement besoin d’au moins une valeur de username dans votre database.yml.

Vous devez également créer le rôle postgres:

 su - postgres create role direct-dev with createdb login password 'password1'