class Time

def at_with_coercion(time_or_number, *args)

instances can be used when called with a single argument
Layers additional behavior on Time.at so that ActiveSupport::TimeWithZone and DateTime
def at_with_coercion(time_or_number, *args)
  if args.empty?
    if time_or_number.is_a?(ActiveSupport::TimeWithZone)
      at_without_coercion(time_or_number.to_r).getlocal
    elsif time_or_number.is_a?(DateTime)
      at_without_coercion(time_or_number.to_f).getlocal
    else
      at_without_coercion(time_or_number)
    end
  else
    at_without_coercion(time_or_number, *args)
  end
end