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?