require File.join(File.dirname(__FILE__), 'support', 'class')
require 'timeout'
# This file must be loaded after the JSON gem and any other library that beats up the Time class.
class Time
# This date format sorts lexicographically
# and is compatible with Javascript's new Date(time_string) constructor.
# Note this this format stores all dates in UTC so that collation
# order is preserved. (There's no longer a need to set ENV['TZ'] = 'UTC'
# in your application.)
def to_json(options = nil)
u = self.getutc
%("#{u.strftime("%Y/%m/%d %H:%M:%S +0000")}")
end
end
# Monkey patch for faster net/http io
if RUBY_VERSION.to_f < 1.9
class Net::BufferedIO #:nodoc:
alias :old_rbuf_fill :rbuf_fill
def rbuf_fill
if @io.respond_to?(:read_nonblock)
begin
@rbuf << @io.read_nonblock(65536)
rescue Errno::EWOULDBLOCK
if IO.select([@io], nil, nil, @read_timeout)
retry
else
raise Timeout::Error, "IO timeout"
end
end
else
timeout(@read_timeout) do
@rbuf << @io.sysread(65536)
end
end
end
end
end