tutorial
Ruby's Shovel Method: Digging Deeper
2 min read
Heads up! This is not actually a deep dive 😬
With everything going on in the world, I almost forgot how fun it can be to code in Ruby! I am not being sarcastic, its actually really fun!
What kind of fun? #
Earlier, I was reviewing some code in a PR to Bridgetown, and I came across this change:
- static_template_files << "/Gemfile"+ static_template_files.push "/Gemfile", "/package.json"
Whenever I see small method changes during code review, I find it a helpful mind exercise to consider whether the method actually needed to be changed since there’s almost always a way in Ruby. More often than not, this leads me to my favorite type of Ruby: quirky, fun, and a bit magical.
You could even call it blursed…🤔
And if we are really being honest, blursed Ruby is my favorite type of Ruby.
Array#<<
#
Commonly referred to as the “shovel operator”, <<
is a method in Ruby that is commonly used to push an object onto an array, but you can shovel into strings as well.
For example:
%w[foo bar] << "baz"#=> ["foo", "bar", "baz"]
Speaking of blursed Ruby, check out the example code in the docs for
str << int
.
TIL! #
Today I /re(learned|membered)/
you can chain shovels! Not that you should….but just in case, know that you can.
The following is a blursed example of just that:
I realized I was grinning from ear to ear while writing this code. This code will run just fine if you paste it into IRB or Pry, emojis and all! A fun example of what you can do with Ruby, if you wanted to.
Back to code review #
Just because you can do it doesn’t mean you should! The readability of swapping the shovel operator with the Array#push
method is the right call in my opinion. The change got a green check of approval from me.
But, I couldn’t resist sharing my blursed example. Hopefully it makes you grin as well.
As I said at the beginning: it’s fun to write Ruby!
Happy coding!