Class: Numeric
- 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
-
#ago(time = ::Time.current) ⇒ Object
(also: #until)
Reads best without arguments: 10.minutes.ago.
-
#as_json(options = nil) ⇒ Object
:nodoc:.
- #blank? ⇒ Boolean
-
#bytes ⇒ Object
(also: #byte)
Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes.
- #days ⇒ Object (also: #day)
- #duplicable? ⇒ Boolean
-
#encode_json(encoder) ⇒ Object
:nodoc:.
- #exabytes ⇒ Object (also: #exabyte)
- #fortnights ⇒ Object (also: #fortnight)
- #gigabytes ⇒ Object (also: #gigabyte)
- #hours ⇒ Object (also: #hour)
- #kilobytes ⇒ Object (also: #kilobyte)
- #megabytes ⇒ Object (also: #megabyte)
- #minutes ⇒ Object (also: #minute)
- #petabytes ⇒ Object (also: #petabyte)
-
#seconds ⇒ Object
(also: #second)
Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.
-
#since(time = ::Time.current) ⇒ Object
(also: #from_now)
Reads best with argument: 10.minutes.since(time).
- #terabytes ⇒ Object (also: #terabyte)
- #weeks ⇒ Object (also: #week)
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( = nil) self end |
#blank? ⇒ Boolean
73 74 75 |
# File 'lib/active_support/core_ext/object/blank.rb', line 73 def blank? false end |
#bytes ⇒ Object 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 |
#days ⇒ Object 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
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 |
#exabytes ⇒ Object Also known as: exabyte
40 41 42 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 40 def exabytes self * EXABYTE end |
#fortnights ⇒ Object 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 |
#gigabytes ⇒ Object Also known as: gigabyte
25 26 27 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 25 def gigabytes self * GIGABYTE end |
#hours ⇒ Object 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 |
#kilobytes ⇒ Object Also known as: kilobyte
15 16 17 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 15 def kilobytes self * KILOBYTE end |
#megabytes ⇒ Object Also known as: megabyte
20 21 22 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 20 def megabytes self * MEGABYTE end |
#minutes ⇒ Object 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 |
#petabytes ⇒ Object Also known as: petabyte
35 36 37 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 35 def petabytes self * PETABYTE end |
#seconds ⇒ Object 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 |
#terabytes ⇒ Object Also known as: terabyte
30 31 32 |
# File 'lib/active_support/core_ext/numeric/bytes.rb', line 30 def terabytes self * TERABYTE end |
#weeks ⇒ Object 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 |