namespace :db do

namespace :structure do
  task :set_schemas_pre_dump do
    if(defined?(ActiveRecord::Tasks::DatabaseTasks))
      config = ActiveRecord::Tasks::DatabaseTasks.current_config
    else
      config = current_config
    end

    @original_schema_search_path = config["schema_search_path"]

    search_path = case ActiveRecord::Base.dump_schemas
    when :schema_search_path
      config["schema_search_path"]
    when :all
      nil
    when String
      ActiveRecord::Base.dump_schemas
    end

    config["schema_search_path"] = search_path
  end

  task :reset_schemas_post_dump do
    if(defined?(ActiveRecord::Tasks::DatabaseTasks))
      config = ActiveRecord::Tasks::DatabaseTasks.current_config
    else
      config = current_config
    end

    config["schema_search_path"] = @original_schema_search_path
  end
end

end

task “db:structure:dump” => “db:structure:set_schemas_pre_dump” Rake::Task.enhance do

Rake::Task["db:structure:reset_schemas_post_dump"].invoke

end