classScheduledefscheduled?(schedulable,start_date,end_date)puts"This #{schedulable.class} "+"is not scheduled\n"+" between #{start_date} and #{end_date}"falseendendclassBicycleattr_reader:schedule,:size,:chain,:tire_size# Scheduleを注入し、初期値を設定するdefinitialize(args={})@schedule=args[:schedule]||Schedule.new# ...end# 与えられた期間(現在はBicycleに固有)の間、# bicycleが利用可能であればtrueを返すdefschedulable?(start_date,end_date)!scheduled?(start_date-lead_days,end_date)end# scheduleの答えを返すdefscheduled?(start_date,end_date)schedule.scheduled?(self,start_date,end_date)end# bicycleがスケジュール可能となるまでの# 準備日数を返すdeflead_days1endendrequire'date'starting=Date.parse("2015/09/04")ending=Date.parse("2015/09/10")b=Bicycle.newb.schedulable?(starting,ending)# This Bicycle is not scheduled# between 2015-09-03 and 2015-09-10# => true