lib/genesis/tasks/genesis.rake in genesis-1.7.0 vs lib/genesis/tasks/genesis.rake in genesis-1.8.0

- old
+ new

@@ -1,11 +1,14 @@ namespace :db do desc "Loads seed data for the current environment." task :genesis => :environment do + dry_run = ENV['DRY_RUN'] + Genesis::Seeder.verify_or_create_version_table - ignores = %w(genesis_common.rb) + ignores = %w(genesis_common.rb + genesis_callbacks.rb) seeds = Dir[File.join( Rails.root, 'db', 'seeds', '*.rb' )] + Dir[File.join( Rails.root, 'db', 'seeds', Rails.env, '*.rb') ] contexts = ENV['CONTEXTS'] unless contexts.nil? || contexts.empty? @@ -14,14 +17,36 @@ contexts.split( ',' ).each do |context| seeds += Dir[File.join( Rails.root, 'db', 'seeds', 'contexts', context, '*.rb' )] end end + puts "", message( contexts, :using_contexts => using_contexts, :start => true ), "" + if dry_run + r = ActiveRecord::Base.connection.execute( "SELECT `schema_seeds`.* FROM `schema_seeds`" ) + versions = [] + executes = [] + r.each_hash { |rec| versions << rec['version'] } + puts '-- DRY RUN --', 'Will execute seeds:', '' + seeds.reject! { |s| ignores.any? { |i| s.include?( i ) } } - puts "", message( contexts, :using_contexts => using_contexts, :start => true ), "" - Genesis::Seeder.run( seeds, ENV['VERSION'] || nil, ignores ) + seeds.each do |s| + match = s.match( /^.*\/((\d*)_.*\.rb)$/ ) + if match + executes << match[1] unless versions.include?( match[2] ) + end + end + + puts executes.sort.join( "\n" ) + puts '' + else + Genesis::Seeder.run( seeds, ENV['VERSION'] || nil, ignores ) + end puts message( contexts, :using_contexts => using_contexts ), "", "" + end + + desc "Loads seed data for the current environment." + task :genesis => :environment do end desc "Recreates the databse by migrating down to VERSION=0 and then db:migrate and db:seed" task :mulligan => :environment do raise 'Cannot seed production' if ENV['RAILS_ENV'] == 'production' || Rails.env.production?