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
http://stackoverflow.com/questions/35875661/rake-task-executing-twice-when-only-called-once cela aide-t-il? – Doon
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