Rake::Task.clear_actions
namespace :db do
namespace :fixtures do # This is heavily based on the original implementation in rails. It handles FIXTURES, FIXTURES_PATH, # and FIXTURES_DIR arguments just like the original but it searches for fixtures in all fixtures # paths. task :load do require 'active_record/fixtures' fixtures_paths = if ENV['FIXTURES_PATH'] [ Rails.root.join(ENV['FIXTURES_PATH'] || %w{test fixtures}).to_s ] else [ ActiveRecord::Tasks::DatabaseTasks.fixtures_path ] + Rails.application.config.fixtures_paths end fixtures_to_load = ENV['FIXTURES'] ? ENV['FIXTURES'].split(',') : nil fixtures_paths.each do |base_dir| fixtures_dir = File.join [base_dir, ENV['FIXTURES_DIR']].compact Dir["#{fixtures_dir}/**/*.yml"].map {|f| f[(fixtures_dir.size + 1)..-5] }.each do |fixture_file| if fixtures_to_load if fixtures_to_load.include?(fixture_file) fixtures_to_load.delete(fixture_file) else next end end ActiveRecord::FixtureSet.create_fixtures(fixtures_dir, fixture_file) end end if fixtures_to_load if !fixtures_to_load.empty? raise "Fixtures #{fixtures_to_load.inspect} not found in any fixtures path #{fixtures_paths.inspect}" end end end end
end