Class: Numeric
- Defined in:
- activesupport/lib/active_support/core_ext/object/blank.rb,
activesupport/lib/active_support/json/encoding.rb,
activesupport/lib/active_support/core_ext/numeric/time.rb,
activesupport/lib/active_support/core_ext/numeric/bytes.rb,
activesupport/lib/active_support/core_ext/object/duplicable.rb,
activesupport/lib/active_support/core_ext/string/output_safety.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
No number is blank:.
-
#bytes ⇒ Object
(also: #byte)
Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes.
- #days ⇒ Object (also: #day)
-
#duplicable? ⇒ Boolean
Numbers are not duplicable:.
-
#encode_json(encoder) ⇒ Object
:nodoc:.
- #exabytes ⇒ Object (also: #exabyte)
- #fortnights ⇒ Object (also: #fortnight)
- #gigabytes ⇒ Object (also: #gigabyte)
- #hours ⇒ Object (also: #hour)
- #html_safe? ⇒ Boolean
- #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
65 66 67 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 65 def ago(time = ::Time.current) time - self end |
#as_json(options = nil) ⇒ Object
:nodoc:
188 |
# File 'activesupport/lib/active_support/json/encoding.rb', line 188 def as_json( = nil) self end |
#blank? ⇒ Boolean
No number is blank:
1.blank? # => false
0.blank? # => false
106 107 108 |
# File 'activesupport/lib/active_support/core_ext/object/blank.rb', line 106 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 'activesupport/lib/active_support/core_ext/numeric/bytes.rb', line 10 def bytes self end |
#days ⇒ Object Also known as: day
49 50 51 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 49 def days ActiveSupport::Duration.new(self * 24.hours, [[:days, self]]) end |
#duplicable? ⇒ Boolean
Numbers are not duplicable:
3.duplicable? # => false
3.dup # => TypeError: can't dup Fixnum
79 80 81 |
# File 'activesupport/lib/active_support/core_ext/object/duplicable.rb', line 79 def duplicable? false end |
#encode_json(encoder) ⇒ Object
:nodoc:
189 |
# File 'activesupport/lib/active_support/json/encoding.rb', line 189 def encode_json(encoder) to_s end |
#exabytes ⇒ Object Also known as: exabyte
40 41 42 |
# File 'activesupport/lib/active_support/core_ext/numeric/bytes.rb', line 40 def exabytes self * EXABYTE end |
#fortnights ⇒ Object Also known as: fortnight
59 60 61 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 59 def fortnights ActiveSupport::Duration.new(self * 2.weeks, [[:days, self * 14]]) end |
#gigabytes ⇒ Object Also known as: gigabyte
25 26 27 |
# File 'activesupport/lib/active_support/core_ext/numeric/bytes.rb', line 25 def gigabytes self * GIGABYTE end |
#hours ⇒ Object Also known as: hour
44 45 46 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 44 def hours ActiveSupport::Duration.new(self * 3600, [[:seconds, self * 3600]]) end |
#html_safe? ⇒ Boolean
71 72 73 |
# File 'activesupport/lib/active_support/core_ext/string/output_safety.rb', line 71 def html_safe? true end |
#kilobytes ⇒ Object Also known as: kilobyte
15 16 17 |
# File 'activesupport/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 'activesupport/lib/active_support/core_ext/numeric/bytes.rb', line 20 def megabytes self * MEGABYTE end |
#minutes ⇒ Object Also known as: minute
39 40 41 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 39 def minutes ActiveSupport::Duration.new(self * 60, [[:seconds, self * 60]]) end |
#petabytes ⇒ Object Also known as: petabyte
35 36 37 |
# File 'activesupport/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
34 35 36 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 34 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)
73 74 75 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 73 def since(time = ::Time.current) time + self end |
#terabytes ⇒ Object Also known as: terabyte
30 31 32 |
# File 'activesupport/lib/active_support/core_ext/numeric/bytes.rb', line 30 def terabytes self * TERABYTE end |
#weeks ⇒ Object Also known as: week
54 55 56 |
# File 'activesupport/lib/active_support/core_ext/numeric/time.rb', line 54 def weeks ActiveSupport::Duration.new(self * 7.days, [[:days, self * 7]]) end |