mirror of
https://github.com/jbranchaud/til
synced 2026-01-07 00:58:02 +00:00
Add Useful ActiveSupport Constants For Durations as a Rails TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1513 TILs and counting..._
|
_1514 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1040,6 +1040,7 @@ _1513 TILs and counting..._
|
|||||||
- [Update Column Versus Update Attribute](rails/update-column-versus-update-attribute.md)
|
- [Update Column Versus Update Attribute](rails/update-column-versus-update-attribute.md)
|
||||||
- [Upgrading Your Manifest For Sprocket's 4](rails/upgrading-your-manifest-for-sprockets-4.md)
|
- [Upgrading Your Manifest For Sprocket's 4](rails/upgrading-your-manifest-for-sprockets-4.md)
|
||||||
- [Use IRB And Ruby Flags With Rails Console](rails/use-irb-and-ruby-flags-with-rails-console.md)
|
- [Use IRB And Ruby Flags With Rails Console](rails/use-irb-and-ruby-flags-with-rails-console.md)
|
||||||
|
- [Useful ActiveSupport Constants For Durations](rails/useful-active-support-constants-for-durations.md)
|
||||||
- [Validate Column Data With Check Constraints](rails/validate-column-data-with-check-constraints.md)
|
- [Validate Column Data With Check Constraints](rails/validate-column-data-with-check-constraints.md)
|
||||||
- [Verify And Read A Signed Cookie Value](rails/verify-and-read-a-signed-cookie-value.md)
|
- [Verify And Read A Signed Cookie Value](rails/verify-and-read-a-signed-cookie-value.md)
|
||||||
- [Where Am I In The Partial Iteration?](rails/where-am-i-in-the-partial-iteration.md)
|
- [Where Am I In The Partial Iteration?](rails/where-am-i-in-the-partial-iteration.md)
|
||||||
|
|||||||
45
rails/useful-active-support-constants-for-durations.md
Normal file
45
rails/useful-active-support-constants-for-durations.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Useful ActiveSupport Constants For Durations
|
||||||
|
|
||||||
|
Whenever I'm passing a duration to a function, I like to [name it with the
|
||||||
|
unit](https://ruudvanasseldonk.com/2022/03/20/please-put-units-in-names)
|
||||||
|
relative to the value it represents. For instance, if I need to pass in an hour
|
||||||
|
duration in seconds, I might write the following line:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
hour_in_seconds = 60 * 60
|
||||||
|
|
||||||
|
# or
|
||||||
|
|
||||||
|
hour_in_seconds = 3600
|
||||||
|
```
|
||||||
|
|
||||||
|
ActiveSupport has a [Duration
|
||||||
|
class](https://api.rubyonrails.org/classes/ActiveSupport/Duration.html) with a
|
||||||
|
series of constants that we can reach for.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_MINUTE
|
||||||
|
=> 60
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_HOUR
|
||||||
|
=> 3600
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_DAY
|
||||||
|
=> 86400
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_WEEK
|
||||||
|
=> 604800
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_MONTH
|
||||||
|
=> 2629746
|
||||||
|
> ActiveSupport::Duration::SECONDS_PER_YEAR
|
||||||
|
=> 31556952
|
||||||
|
```
|
||||||
|
|
||||||
|
Though it is fun to know about these, we should keep in mind that this class
|
||||||
|
provides support for what is likely to be a more useful abstraction layer:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
> 1.hour
|
||||||
|
=> 1 hour
|
||||||
|
> 3.hours
|
||||||
|
=> 3 hours
|
||||||
|
> 1.day.to_i
|
||||||
|
=> 86400
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user