Classes and Modules
Constants
DURATION_UNITS | = | [:years, :months, :days, :minutes, :seconds].freeze | ||
EMPTY_INTERVAL | = | '0'.freeze | ||
PARSER | = | Parser.new |
Single instance of Parser used for parsing, to save on memory (since the parser has no state). |
Public Class methods
extended
(db)
Reset the conversion procs if using the native postgres adapter, and extend the datasets to correctly literalize ActiveSupport::Duration values.
[show source]
# File lib/sequel/extensions/pg_interval.rb, line 121 def self.extended(db) db.instance_eval do extend_datasets(IntervalDatasetMethods) copy_conversion_procs([1186, 1187]) @schema_type_classes[:interval] = ActiveSupport::Duration end end
literal_duration
(duration)
Return an unquoted string version of the duration object suitable for use as a bound variable.
[show source]
# File lib/sequel/extensions/pg_interval.rb, line 46 def self.literal_duration(duration) h = Hash.new(0) duration.parts.each{|unit, value| h[unit] += value} s = '' DURATION_UNITS.each do |unit| if (v = h[unit]) != 0 s << "#{v.is_a?(Integer) ? v : sprintf('%0.6f', v)} #{unit} " end end if s.empty? EMPTY_INTERVAL else s end end
Public Instance methods
bound_variable_arg
(arg, conn)
Handle ActiveSupport::Duration values in bound variables.
[show source]
# File lib/sequel/extensions/pg_interval.rb, line 130 def bound_variable_arg(arg, conn) case arg when ActiveSupport::Duration IntervalDatabaseMethods.literal_duration(arg) else super end end