Module: Strava::Models::Mixins::AverageSpeed

Extended by:
ActiveSupport::Concern
Included in:
DetailedActivity, Split
Defined in:
lib/strava/models/mixins/average_speed.rb

Overview

Provides average speed and pace conversion methods.

This mixin adds the average_speed property (stored in meters per second) and provides helper methods to convert it to various speed and pace formats. Pace is the inverse of speed (time per distance) and is commonly used for running.

Examples:

Using speed and pace helpers

activity = client.activity(1234567890)
puts activity.average_speed                    # => 3.5 (m/s)
puts activity.average_speed_s                  # => "12.6km/h"
puts activity.average_speed_miles_per_hour_s   # => "7.8mph"
puts activity.pace_per_kilometer_s             # => "4m45s/km"
puts activity.pace_per_mile_s                  # => "7m40s/mi"

Instance Method Summary collapse

Instance Method Details

#average_speed_kilometer_per_hour_sString?

Returns average speed in kilometers per hour.

Returns:

  • (String, nil)

    Speed formatted as "X.Xkm/h"



81
82
83
84
85
# File 'lib/strava/models/mixins/average_speed.rb', line 81

def average_speed_kilometer_per_hour_s
  return unless average_speed&.positive?

  format('%.1fkm/h', average_speed * 3.6)
end

#average_speed_meters_per_secondFloat

Note:

Always in meters per second, even in imperial splits

Returns average speed in meters per second (same as average_speed).

Returns:

  • (Float)

    Average speed in m/s



36
37
38
# File 'lib/strava/models/mixins/average_speed.rb', line 36

def average_speed_meters_per_second
  average_speed
end

#average_speed_miles_per_hour_sString?

Returns average speed in miles per hour.

Returns:

  • (String, nil)

    Speed formatted as "X.Xmph"



92
93
94
95
96
# File 'lib/strava/models/mixins/average_speed.rb', line 92

def average_speed_miles_per_hour_s
  return unless average_speed&.positive?

  format('%.1fmph', average_speed * 2.23694)
end

#average_speed_sString?

Returns default formatted average speed (kilometers per hour).

Returns:

  • (String, nil)

    Speed formatted as "X.Xkm/h"



103
104
105
# File 'lib/strava/models/mixins/average_speed.rb', line 103

def average_speed_s
  average_speed_kilometer_per_hour_s
end

#pace_per_100_meters_sString?

Returns pace per 100 meters (swimming).

Returns:

  • (String, nil)

    Pace formatted as "XmYs/100m"



63
64
65
# File 'lib/strava/models/mixins/average_speed.rb', line 63

def pace_per_100_meters_s
  convert_meters_per_second_to_pace average_speed, :'100m'
end

#pace_per_100_yards_sString?

Returns pace per 100 yards (swimming).

Returns:

  • (String, nil)

    Pace formatted as "XmYs/100yd"



54
55
56
# File 'lib/strava/models/mixins/average_speed.rb', line 54

def pace_per_100_yards_s
  convert_meters_per_second_to_pace average_speed, :'100yd'
end

#pace_per_kilometer_sString?

Returns pace per kilometer.

Returns:

  • (String, nil)

    Pace formatted as "XmYs/km" (e.g., "4m30s/km")



72
73
74
# File 'lib/strava/models/mixins/average_speed.rb', line 72

def pace_per_kilometer_s
  convert_meters_per_second_to_pace average_speed, :km
end

#pace_per_mile_sString?

Returns pace per mile.

Returns:

  • (String, nil)

    Pace formatted as "Xm%Ys/mi" (e.g., "7m30s/mi")



45
46
47
# File 'lib/strava/models/mixins/average_speed.rb', line 45

def pace_per_mile_s
  convert_meters_per_second_to_pace average_speed, :mi
end

#pace_sString?

Returns default formatted pace (per kilometer).

Returns:

  • (String, nil)

    Pace formatted as "XmYs/km"



112
113
114
# File 'lib/strava/models/mixins/average_speed.rb', line 112

def pace_s
  pace_per_kilometer_s
end