我在使用Faker向开发的Postgres数据库中播种数千个记录时,发现了种子文件的问题。我中止了播种操作并回滚了插入,修复了seeds.rb文件。
当我再次运行它时,每个rake db:*任务都会运行两次。我可以正常运行rake routes,但如果我运行rake db:drop,就会得到类似以下的结果:
如果我尝试运行迁移,当它尝试应用索引时整个过程都会崩溃,因为它已经创建了那些列。
我只有一个默认的Rakefile,在lib或其他任何地方都没有自定义的rake文件。
环境是rails 5.0.0.1和ruby 2.2.2,如果这有任何区别的话。 我现在感到非常迷失。
这是我的Rakefile。
当我再次运行它时,每个rake db:*任务都会运行两次。我可以正常运行rake routes,但如果我运行rake db:drop,就会得到类似以下的结果:
$ rake db:drop
Dropped database 'vp_development'
Dropped database 'vp_development'
如果我尝试运行迁移,当它尝试应用索引时整个过程都会崩溃,因为它已经创建了那些列。
我只有一个默认的Rakefile,在lib或其他任何地方都没有自定义的rake文件。
环境是rails 5.0.0.1和ruby 2.2.2,如果这有任何区别的话。 我现在感到非常迷失。
这是我的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
我看到其他帖子建议这可能是一个gem的问题,但是当这个问题开始时,我已经几天没有添加新的gem了。无论如何,这里是gemfile。
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]
编辑:我还尝试了在db命名空间中使用自定义任务,它可以正常工作。 只运行一次。 据我所知,db:drop,db:create,db:reset,db:migrate是唯一运行两次的任务。 下面是 db:drop
的跟踪信息和另一个 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