Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module EventLogger
- class << self
- attr_reader :trip, :event, :waypoint, :event_type, :date, :description
- def log_proccess(**params)
- @trip = params[:trip]
- @event = params[:event]
- @waypoint = params[:waypoint]
- @event_type = params[:event_type]
- @date = params[:date]
- @description = params[:description]
- case
- when close_event?
- info
- when end_trip?
- info
- when start_trip?
- info
- when instant_event?
- info
- when open_event?
- info
- end
- end
- def close_event?
- trip && date
- end
- def end_trip?
- end_start && description.eql?(:start_event)
- end
- def start_trip?
- end_start && description.eql?(:end_event)
- end
- def instant_event?
- instant_open && description.eql?(:instant)
- end
- def open_event?
- instant_open && description.eql?(:open)
- end
- def logger
- @logger ||= Logger.new(STDOUT)
- end
- delegate :info, :debug, :warn, :error, to: :logger
- private_class_method :end_start, :instant_open
- def end_start
- trip && date && waypoint
- end
- def instant_open
- trip && date && waypoint && event_type
- end
- end
- end
- close_event = EventLogger.log_proccess(trip: Trip.first, date: Time.now)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement