Class: Dogfood::Scheduler
- Inherits:
-
Object
- Object
- Dogfood::Scheduler
- Defined in:
- lib/dogfood/scheduler.rb
Constant Summary collapse
- DEFAULT_DELAYS =
{ parts_arrival: { same_day: 0.40, next_day: 0.40, two_to_three_days: 0.15, next_week: 0.05 }, customer_approval: { same_day: 0.60, next_day: 0.25, two_to_three_days: 0.10, next_week: 0.05 }, payment: { same_day: 0.70, next_week: 0.20, net_30: 0.10 }, core_return: { next_day: 0.70, two_to_three_days: 0.30 }, labor_completion: { same_day: 0.85, next_day: 0.15 } }.freeze
Instance Method Summary collapse
-
#initialize(rng, delays: {}) ⇒ Scheduler
constructor
A new instance of Scheduler.
- #schedule(event) ⇒ Object
Constructor Details
#initialize(rng, delays: {}) ⇒ Scheduler
Returns a new instance of Scheduler.
13 14 15 16 |
# File 'lib/dogfood/scheduler.rb', line 13 def initialize(rng, delays: {}) @rng = rng @delays = DEFAULT_DELAYS.merge(delays) end |
Instance Method Details
#schedule(event) ⇒ Object
18 19 20 21 22 |
# File 'lib/dogfood/scheduler.rb', line 18 def schedule(event) distribution = @delays.fetch(event) { raise ArgumentError, "Unknown event: #{event}" } delay_days = resolve_delay(distribution) { delay_days: delay_days, event: event } end |