diff --git a/lib/foodsoft_config.rb b/lib/foodsoft_config.rb index 4fdd9742..71b64024 100644 --- a/lib/foodsoft_config.rb +++ b/lib/foodsoft_config.rb @@ -24,6 +24,14 @@ class FoodsoftConfig config[key] end + # Loop through each foodcoop and executes the given block after setup config and database + def each_coop + APP_CONFIG.keys.reject { |coop| coop =~ /^(default|development|test|production)$/ }.each do |coop| + select_foodcoop coop + yield coop + end + end + private def set_config(foodcoop) diff --git a/lib/tasks/multicoops.rake b/lib/tasks/multicoops.rake new file mode 100644 index 00000000..6f69d111 --- /dev/null +++ b/lib/tasks/multicoops.rake @@ -0,0 +1,12 @@ +namespace :multicoops do + + desc 'Runs a specific rake task for each registered foodcoop, use rake multicoops:run db:migrate' + task :run => :environment do + task_to_run = ARGV[1] + FoodsoftConfig.each_coop do |coop| + puts "Run '#{task_to_run}' for #{coop}" + Rake::Task[task_to_run].invoke + end + end + +end \ No newline at end of file