From 66e034743620172d93158ddc94b49033ee3ee206 Mon Sep 17 00:00:00 2001 From: Zog Date: Mon, 26 Feb 2018 17:14:24 +0100 Subject: Refs #6026; Use SEED_ENV in seedbank, fallback on Rails.env --- lib/tasks/seeds.rake | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/tasks/seeds.rake diff --git a/lib/tasks/seeds.rake b/lib/tasks/seeds.rake new file mode 100644 index 000000000..8e5bbda26 --- /dev/null +++ b/lib/tasks/seeds.rake @@ -0,0 +1,44 @@ +namespace :db do + + include Seedbank::DSL + + base_dependencies = ['db:seed:original'] + override_dependency = ['db:seed:common'] + + namespace :seed do + # Create seed tasks for all the seeds in seeds_path and add them to the dependency + # list along with the original db/seeds.rb. + common_dependencies = glob_seed_files_matching('*.seeds.rb').sort.map { |seed_file| seed_task_from_file(seed_file) } + + desc "Load the seed data from db/seeds.rb and db/seeds/*.seeds.rb." + task 'common' => base_dependencies + common_dependencies + + seeds_environment = ENV.fetch("SEED_ENV", Rails.env) + + # Glob through the directories under seeds_path and create a task for each adding it to the dependency list. + # Then create a task for the environment + glob_seed_files_matching('/*/').each do |directory| + environment = File.basename(directory) + + environment_dependencies = glob_seed_files_matching(environment, '*.seeds.rb').sort.map { |seed_file| seed_task_from_file(seed_file) } + + desc "Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/#{environment}/*.seeds.rb." + task environment => ['db:seed:common'] + environment_dependencies + + override_dependency << "db:seed:#{environment}" if defined?(Rails) && seeds_environment == environment + end + + if Rails.version > '4' + original_seeds_file = Rails.application.paths["db/seeds.rb"].existent.first + elsif Rails.version > '3.1' + original_seeds_file = Rails.application.paths["db/seeds"].existent.first + else + original_seeds_file = Rails.root.join("db","seeds").children.first.to_s + end + define_seed_task original_seeds_file, :original if original_seeds_file + end + + # Override db:seed to run all the common and environments seeds plus the original db:seed. + desc 'Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/ENVIRONMENT/*.seeds.rb. ENVIRONMENT is the e,nv var SEED_ENV or the current environment in Rails.env.' + override_seed_task :seed => override_dependency +end -- cgit v1.2.3 From 4ddefc4dc33fef81489de4a8318ece9df5f1a6bc Mon Sep 17 00:00:00 2001 From: Zog Date: Tue, 27 Feb 2018 12:40:45 +0100 Subject: Refs #6026; Fix duplicated seeds tasks --- lib/tasks/seeds.rake | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/lib/tasks/seeds.rake b/lib/tasks/seeds.rake index 8e5bbda26..9038b64f9 100644 --- a/lib/tasks/seeds.rake +++ b/lib/tasks/seeds.rake @@ -6,39 +6,14 @@ namespace :db do override_dependency = ['db:seed:common'] namespace :seed do - # Create seed tasks for all the seeds in seeds_path and add them to the dependency - # list along with the original db/seeds.rb. - common_dependencies = glob_seed_files_matching('*.seeds.rb').sort.map { |seed_file| seed_task_from_file(seed_file) } - - desc "Load the seed data from db/seeds.rb and db/seeds/*.seeds.rb." - task 'common' => base_dependencies + common_dependencies - seeds_environment = ENV.fetch("SEED_ENV", Rails.env) - - # Glob through the directories under seeds_path and create a task for each adding it to the dependency list. - # Then create a task for the environment glob_seed_files_matching('/*/').each do |directory| environment = File.basename(directory) - - environment_dependencies = glob_seed_files_matching(environment, '*.seeds.rb').sort.map { |seed_file| seed_task_from_file(seed_file) } - - desc "Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/#{environment}/*.seeds.rb." - task environment => ['db:seed:common'] + environment_dependencies - override_dependency << "db:seed:#{environment}" if defined?(Rails) && seeds_environment == environment end - - if Rails.version > '4' - original_seeds_file = Rails.application.paths["db/seeds.rb"].existent.first - elsif Rails.version > '3.1' - original_seeds_file = Rails.application.paths["db/seeds"].existent.first - else - original_seeds_file = Rails.root.join("db","seeds").children.first.to_s - end - define_seed_task original_seeds_file, :original if original_seeds_file end # Override db:seed to run all the common and environments seeds plus the original db:seed. - desc 'Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/ENVIRONMENT/*.seeds.rb. ENVIRONMENT is the e,nv var SEED_ENV or the current environment in Rails.env.' + desc 'Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/ENVIRONMENT/*.seeds.rb. ENVIRONMENT is the env var SEED_ENV or the current environment in Rails.env.' override_seed_task :seed => override_dependency end -- cgit v1.2.3