BathHacked/energy-sparks

View on GitHub
lib/tasks/deployment/20220712130546_add_van_and_electric_bike_transport_types.rake

Summary

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

    # See the following doc for information on adding and updating transport types:
    # https://docs.google.com/document/d/1uEmInQwth9xjLm3SLk8FWh8i0PqKYERMStE5Amtri2k/edit?usp=sharing

    # Create or update two new transport types
    TransportSurvey::TransportType.upsert({ name: 'Van', image: '🚐', speed_km_per_hour: 32.0, kg_co2e_per_km: 0.24017, can_share: true, park_and_stride: false, category: nil, note: 'Average van, unknown size or fuel type', created_at: Time.zone.now, updated_at: Time.zone.now }, unique_by: :name)
    TransportSurvey::TransportType.upsert({ name: 'Electric Bike', image: '🔌🚲', speed_km_per_hour: 19.3, kg_co2e_per_km: 0.00133, can_share: false, park_and_stride: false, category: 'walking_and_cycling', note: '400Wh battery, 60km per charge, highest assistance level', created_at: Time.zone.now, updated_at: Time.zone.now }, unique_by: :name)

    # These notes needs updating too
    TransportSurvey::TransportType.find_by(name: "Park and Stride").update(note: "Park and Stride, car emmisions but assumed 10 mins walked")

    # Now put in the right order
    order = ["Walking", "Bike", "Electric Bike",
             "Park and Stride", "Car", "Car (Petrol)", "Car (Diesel)", "Car (Hybrid)", "Electric Car", "Van", "Taxi",
             "School bus", "Bus", "Bus (London)", "Train", "Tube",
             "Motorbike"]

    order.each_with_index do |name, position|
      TransportSurvey::TransportType.find_by(name: name).update(position: position)
    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