Class: Numeric

Inherits:
Object show all
Defined in:
lib/active_support/core_ext/object/blank.rb,
lib/active_support/json/encoding.rb,
lib/active_support/core_ext/numeric/time.rb,
lib/active_support/core_ext/numeric/bytes.rb,
lib/active_support/core_ext/object/duplicable.rb

Overview

:nodoc:

Constant Summary collapse

KILOBYTE =
1024
MEGABYTE =
KILOBYTE * 1024
GIGABYTE =
MEGABYTE * 1024
TERABYTE =
GIGABYTE * 1024
PETABYTE =
TERABYTE * 1024
EXABYTE =
PETABYTE * 1024

Instance Method Summary collapse

Instance Method Details

#ago(time = ::Time.current) ⇒ Object Also known as: until

Reads best without arguments: 10.minutes.ago



63
64
65
# File 'lib/active_support/core_ext/numeric/time.rb', line 63

def ago(time = ::Time.current)
  time - self
end

#as_json(options = nil) ⇒ Object

:nodoc:



181
# File 'lib/active_support/json/encoding.rb', line 181

def as_json(options = nil) self end

#blank?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/active_support/core_ext/object/blank.rb', line 73

def blank?
  false
end

#bytesObject Also known as: byte

Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes



10
11
12
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 10

def bytes
  self
end

#daysObject Also known as: day



47
48
49
# File 'lib/active_support/core_ext/numeric/time.rb', line 47

def days
  ActiveSupport::Duration.new(self * 24.hours, [[:days, self]])
end

#duplicable?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/active_support/core_ext/object/duplicable.rb', line 50

def duplicable?
  false
end

#encode_json(encoder) ⇒ Object

:nodoc:



182
# File 'lib/active_support/json/encoding.rb', line 182

def encode_json(encoder) to_s end

#exabytesObject Also known as: exabyte



40
41
42
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 40

def exabytes
  self * EXABYTE
end

#fortnightsObject Also known as: fortnight



57
58
59
# File 'lib/active_support/core_ext/numeric/time.rb', line 57

def fortnights
  ActiveSupport::Duration.new(self * 2.weeks, [[:days, self * 14]])
end

#gigabytesObject Also known as: gigabyte



25
26
27
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 25

def gigabytes
  self * GIGABYTE
end

#hoursObject Also known as: hour



42
43
44
# File 'lib/active_support/core_ext/numeric/time.rb', line 42

def hours
  ActiveSupport::Duration.new(self * 3600, [[:seconds, self * 3600]])
end

#kilobytesObject Also known as: kilobyte



15
16
17
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 15

def kilobytes
  self * KILOBYTE
end

#megabytesObject Also known as: megabyte



20
21
22
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 20

def megabytes
  self * MEGABYTE
end

#minutesObject Also known as: minute



37
38
39
# File 'lib/active_support/core_ext/numeric/time.rb', line 37

def minutes
  ActiveSupport::Duration.new(self * 60, [[:seconds, self * 60]])
end

#petabytesObject Also known as: petabyte



35
36
37
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 35

def petabytes
  self * PETABYTE
end

#secondsObject Also known as: second

Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.

These methods use Time#advance for precise date calculations when using from_now, ago, etc. as well as adding or subtracting their results from a Time object. For example:

# equivalent to Time.now.advance(:months => 1)
1.month.from_now

# equivalent to Time.now.advance(:years => 2)
2.years.from_now

# equivalent to Time.now.advance(:months => 4, :years => 5)
(4.months + 5.years).from_now

While these methods provide precise calculation when used as in the examples above, care should be taken to note that this is not true if the result of ‘months’, ‘years’, etc is converted before use:

# equivalent to 30.days.to_i.from_now
1.month.to_i.from_now

# equivalent to 365.25.days.to_f.from_now
1.year.to_f.from_now

In such cases, Ruby’s core Date and Time should be used for precision date and time arithmetic



32
33
34
# File 'lib/active_support/core_ext/numeric/time.rb', line 32

def seconds
  ActiveSupport::Duration.new(self, [[:seconds, self]])
end

#since(time = ::Time.current) ⇒ Object Also known as: from_now

Reads best with argument: 10.minutes.since(time)



71
72
73
# File 'lib/active_support/core_ext/numeric/time.rb', line 71

def since(time = ::Time.current)
  time + self
end

#terabytesObject Also known as: terabyte



30
31
32
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 30

def terabytes
  self * TERABYTE
end

#weeksObject Also known as: week



52
53
54
# File 'lib/active_support/core_ext/numeric/time.rb', line 52

def weeks
  ActiveSupport::Duration.new(self * 7.days, [[:days, self * 7]])
end