rails_generators/prepare_seeding/templates/genesis.rake in genesis-1.1.0 vs rails_generators/prepare_seeding/templates/genesis.rake in genesis-1.2.0

- old
+ new

@@ -1,23 +1,73 @@ namespace :db do desc "Loads seed data for the current environment." task :genesis => :environment do Genesis::Seeder.verify_or_create_version_table - ignores = %w() - seeds = Dir[File.join( RAILS_ROOT, 'db', 'seeds', '*.rb' )] + - Dir[File.join( RAILS_ROOT, 'db', 'seeds', RAILS_ENV, '*.rb') ] + ignores = %w(genesis_common.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? + contexts = expand_contexts if contexts == 'all' + contexts.split( ',' ).each do |context| + seeds += Dir[File.join( Rails.root, 'db', 'seeds', 'contexts', context, '*.rb' )] + end + end + Genesis::Seeder.run( seeds, ENV['VERSION'] || nil, ignores ) end desc "Drops and recreates all tables along with seeding the database" task :mulligan => :environment do Rake::Task['db:migrate:reset'].invoke Rake::Task['db:genesis'].invoke end + desc "An alias for the db:genesis task" + task :seed => :environment do + Rake::Task['db:genesis'].invoke + end + + desc "An alias for the db:regenesis task" + task :reseed => :environment do + Rake::Task['db:regenesis'].invoke + end + + desc "Removes all data, runs migrations and then seeds the database" + task :regenesis => :environment do + ActiveRecord::Base.connection.tables.select { |t| !['schema_migrations', 'schema_seeds', 'versions', 'sessions'].include?( t ) }.each do |table| + puts "Emptying the #{table} table" + klass = table.classify.to_s.constantize + klass.delete_all + end + + puts '' + + Genesis::SchemaSeed.delete_all + ActiveRecord::Base.connection.execute( 'DELETE FROM `versions`' ) + ActiveRecord::Base.connection.execute( 'DELETE FROM `sessions`' ) + + Rake::Task['db:migrate'].invoke + Rake::Task['db:test:prepare'].invoke + Rake::Task['db:genesis'].invoke + end + namespace :genesis do desc "Returns the current seed version from teh schema_seeds table" task :version => :environment do puts "[Genesis Seed Version] #{Genesis::Seeder.get_current_version}" end end +end + +def seeds_root + File.join( Rails.root, 'db', 'seeds' ) +end + +def contexts_root + File.join( seeds_root, 'contexts' ) +end + +def expand_contexts + Dir[File.join( contexts_root, '*' )].map { |d| d.split( '/' ).last }.join ',' end