Your question is Production-Ready Ruby Improvements. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
You're an engineer at Betterup, a coaching platform. This service object schedules a coaching session between a member and their coach. It's part of a take-home exercise and works in the happy-path demo, but the reviewer flagged it as not production ready.
class SessionScheduler
def initialize(member, coach, requested_time, duration)
@member = member
@coach = coach
@requested_time = requested_time
@duration = duration
end
def call
calendar_event = CalendarApi.create_event(@coach.email, @requested_time)
session = Session.create!(
member_id: @member.id,
coach_id: @coach.id,
scheduled_at: @requested_time,
duration_minutes: 60,
calendar_event_id: calendar_event.id
)
@member.update!(credits: @member.credits - 1)
@member.past_sessions.each do |past|
puts "previous coach: #{past.coach.name}"
end
session
end
end
What things would you do to this code to get it production ready? Explain each change and why it matters before this runs against real members and real billing.