I am doing some small ruby scripts for a dashboard and need to do some date calculations, like the timestamp of the first of the previous month and the timestamp of the end of the previous month. Rails makes this so easy with
(DateTime.now - 1.month).beginning_of_month. I looked around for a way to do it with straight up Ruby, but didn’t see a good solution.
Luckily, some of the nice parts of Rails have been broken out into the active support gem. You need to add it to your
Gemfile or however else you are managing your gems, of course. Confusingly, the gem is
activesupport and the require statement is
require active_support/... (see the underscore?).
There’s an entire guide on how to pull in just the active support functionality you need. Unfortunately, I couldn’t make the targeted includes work (I was trying to pull in both numeric and date extensions precisely, but kept getting the error message
undefined method `month' for 1:Integer (NoMethodError).
Finally, I just pulled in
active_support/time and everything worked.