BathHacked/energy-sparks

View on GitHub
lib/tasks/deployment/20231115140506_load_funders.rake

Summary

Maintainability
Test Coverage
namespace :after_party do
  desc 'Deployment task: load_funders'
  task load_funders: :environment do
    puts "Running deploy task 'load_funders'"

    file_name = File.join( File.expand_path(File.dirname(__FILE__)) , "funders.csv" )
    CSV.foreach( file_name, headers: true ) do |row|
      _school_group = row[0]
      school_name = row[1]
      funder_name = row[2]

      school = School.find_by_name(school_name)
      puts "No school called: #{school_name}" unless school
      next unless school

      if funder_name.present?
        funder = Funder.find_by_name(funder_name.rstrip)
        if funder
          school.update!(funder: funder)
        else
          puts "No funder called: #{funder_name}"
        end
      else
        #no funder in spreadsheet, as school is now archived/removed,
        #so set to nil
        school.update!(funder: nil)
      end

    end

    # Update task as completed.  If you remove the line below, the task will
    # run with every deploy (or every time you call after_party:run).
    AfterParty::TaskRecord
      .create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
  end
end