2016-10-07 2 views
1

Je semais une base de données de développement postgres avec quelques milliers d'enregistrements de Faker lorsque j'ai rencontré un problème avec le fichier de départ. J'ai interrompu l'opération d'amorçage et j'ai annulé les insertions et corrigé le fichier seeds.rb. Lorsque je suis allé le relancer, toutes les tâches rake db:* s'exécutent deux fois. Je peux courir rake routes très bien, mais si je cours rake db:drop je reçois quelque chose comme ceci:rake db tâches en cours d'exécution deux fois

$ rake db:drop 
Dropped database 'vp_development' 
Dropped database 'vp_development' 

Si je tente de lancer la migration la chose explose quand il tente d'appliquer des index, car il est déjà créé ces colonnes.

Je n'ai que le seul Rakefile par défaut, et aucun fichier rake personnalisé dans lib ou ailleurs.

L'environnement est les rails 5.0.0.1 et ruby ​​2.2.2 si cela fait une différence. Je suis tellement perdu là-dessus maintenant.

Voici mon Rakefile

# Add your own tasks in files placed in lib/tasks ending in .rake, 
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 

require_relative 'config/application' 

Rails.application.load_tas 

J'ai vu d'autres sujets, il pourrait être ce qui suggère un problème avec un bijou, mais je ne l'avais pas ajouté un nouveau joyau dans quelques jours où ce problème a commencé . Voici le gemfile de toute façon.

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '~> 5.0.0', '>= 5.0.0.1' 
gem 'puma', '~> 3.0' 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.2' 
gem 'jquery-rails' 
gem 'turbolinks', '~> 5' 
gem 'jbuilder', '~> 2.5' 
gem 'devise' 
gem 'bootstrap-sass', '3.3.6' 
gem 'pg' 
gem 'friendly_id' 
gem 'will_paginate' 
gem 'faker' 

group :development, :test do 
    #gem 'sqlite3' 
    gem 'byebug', platform: :mri 
end 

group :development do 
    gem 'web-console' 
    gem 'listen', '~> 3.0.5' 
    gem 'spring' 
    gem 'spring-watcher-listen', '~> 2.0.0' 
end 

group :production do 
end 

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

Edit: J'ai essayé aussi une tâche personnalisée dans l'espace de noms db et il fonctionne très bien. Ne fonctionne qu'une fois. De ce que je peux dire, db: drop, db: créer, db: reset, db: migrate sont les seules tâches qui s'exécutent deux fois. Voici une trace sur db:drop et une autre sur db:create.

$ rake db:drop --trace 
** Invoke db:drop (first_time) 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Invoke db:check_protected_environments (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config 
** Execute db:check_protected_environments 
** Execute db:drop 
** Invoke db:drop:_unsafe (first_time) 
** Invoke db:load_config 
** Execute db:drop:_unsafe 
Dropped database 'vp_development' 
Dropped database 'vp_development' 

rake db:create --trace 
** Invoke db:create (first_time) 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:create 
Created database 'vp_development' 
Database 'vp_development' already exists 
+0

http://stackoverflow.com/questions/35875661/rake-task-executing-twice-when-only-called-once cela aide-t-il? – Doon

+0

J'avais déjà traversé celui-là, mais j'ai essayé d'exécuter leur tâche personnalisée depuis le Rakefile et cela fonctionne parfaitement. Juste un seul passage, donc ça ne peut pas être la même cause que la leur. $ rake foo: bar RUNNING RUNNING ENCORE $ rake db: bar RUNNING TOUJOURS COURIR – bubunt205

Répondre

0

J'ai trouvé le coupable. Quelque part dans les derniers commit git, mon database.yml était en quelque sorte dupliqué.

Chaque fois que j'essayais d'exécuter une commande Rake qui faisait référence à l'environnement, elle s'exécutait deux fois. Un problème étrange. Je suis content d'avoir pu le résoudre.