aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Fernandes <joao.fernandes@onfido.com>2017-10-24 15:13:34 +0100
committerJoão Fernandes <joao.fernandes@onfido.com>2017-10-24 15:30:29 +0100
commitd86370252ea33c5b6fba2d53efa15b1d0082a487 (patch)
tree8c407a5a40a55b00f6198a822082e2a06b5699f9
parentd147ed02a00fe50f3428962dfadb5de076c56a5e (diff)
downloadrails-d86370252ea33c5b6fba2d53efa15b1d0082a487.tar.gz
rails-d86370252ea33c5b6fba2d53efa15b1d0082a487.tar.bz2
rails-d86370252ea33c5b6fba2d53efa15b1d0082a487.zip
Make clear that Time core extensions are split between Numeric and Integer
The documentation wrongly suggests that Time extensions to Numeric include methods months and years, when these belong to Integer. Update both classes and guides.
-rw-r--r--activesupport/lib/active_support/core_ext/integer/time.rb2
-rw-r--r--activesupport/lib/active_support/core_ext/numeric/time.rb14
-rw-r--r--guides/source/active_support_core_extensions.md34
3 files changed, 39 insertions, 11 deletions
diff --git a/activesupport/lib/active_support/core_ext/integer/time.rb b/activesupport/lib/active_support/core_ext/integer/time.rb
index 74c73ab064..66160b3dd7 100644
--- a/activesupport/lib/active_support/core_ext/integer/time.rb
+++ b/activesupport/lib/active_support/core_ext/integer/time.rb
@@ -19,6 +19,8 @@ class Integer
#
# # equivalent to Time.now.advance(months: 4, years: 5)
# (4.months + 5.years).from_now
+ #
+ # For other durations, check the extensions to Numeric.
def months
ActiveSupport::Duration.months(self)
end
diff --git a/activesupport/lib/active_support/core_ext/numeric/time.rb b/activesupport/lib/active_support/core_ext/numeric/time.rb
index d62b57fe27..dee9141356 100644
--- a/activesupport/lib/active_support/core_ext/numeric/time.rb
+++ b/activesupport/lib/active_support/core_ext/numeric/time.rb
@@ -7,19 +7,21 @@ require "active_support/core_ext/date/calculations"
require "active_support/core_ext/date/acts_like"
class Numeric
- # Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.years.
+ # Enables the use of time calculations and declarations, like 45.minutes + 2.hours + 4.weeks.
#
# 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.current.advance(months: 1)
+ # # equivalent to Time.current.advance(days: 1)
# 1.month.from_now
#
- # # equivalent to Time.current.advance(years: 2)
- # 2.years.from_now
+ # # equivalent to Time.current.advance(weeks: 2)
+ # 2.weeks.from_now
#
- # # equivalent to Time.current.advance(months: 4, years: 5)
- # (4.months + 5.years).from_now
+ # # equivalent to Time.current.advance(days: 4, weeks: 5)
+ # (4.days + 5.weeks).from_now
+ #
+ # For other durations, check the extensions to Integer.
def seconds
ActiveSupport::Duration.seconds(self)
end
diff --git a/guides/source/active_support_core_extensions.md b/guides/source/active_support_core_extensions.md
index 067a7b7cb6..54d3dec1c2 100644
--- a/guides/source/active_support_core_extensions.md
+++ b/guides/source/active_support_core_extensions.md
@@ -1796,7 +1796,7 @@ NOTE: Defined in `active_support/core_ext/numeric/bytes.rb`.
### Time
-Enables the use of time calculations and declarations, like `45.minutes + 2.hours + 4.years`.
+Enables the use of time calculations and declarations, like `45.minutes + 2.hours + 4.weeks`.
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:
@@ -1805,13 +1805,15 @@ as well as adding or subtracting their results from a Time object. For example:
# equivalent to Time.current.advance(months: 1)
1.month.from_now
-# equivalent to Time.current.advance(years: 2)
-2.years.from_now
+# equivalent to Time.current.advance(weeks: 2)
+2.weeks.from_now
-# equivalent to Time.current.advance(months: 4, years: 5)
-(4.months + 5.years).from_now
+# equivalent to Time.current.advance(months: 4, weeks: 5)
+(4.months + 5.weeks).from_now
```
+WARNING. For other durations please refer to the time extensions to `Integer`.
+
NOTE: Defined in `active_support/core_ext/numeric/time.rb`.
### Formatting
@@ -1947,6 +1949,28 @@ The method `ordinalize` returns the ordinal string corresponding to the receiver
NOTE: Defined in `active_support/core_ext/integer/inflections.rb`.
+### Time
+
+Enables the use of time calculations and declarations, like `4.months + 5.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:
+
+```ruby
+# equivalent to Time.current.advance(months: 1)
+1.month.from_now
+
+# equivalent to Time.current.advance(years: 2)
+2.years.from_now
+
+# equivalent to Time.current.advance(months: 4, years: 5)
+(4.months + 5.years).from_now
+```
+
+WARNING. For other durations please refer to the time extensions to `Numeric`.
+
+NOTE: Defined in `active_support/core_ext/integer/time.rb`.
+
Extensions to `BigDecimal`
--------------------------
### `to_s`