DEV Community

Darrian Bagley
Darrian Bagley

Posted on

Ruby Methods to Increase your Programming Efficiency

Using the right Ruby methods can save you a lot of work. The more methods you are familiar with the faster you can produce working code & the better this code will be, both in performance & quality. To improve your productivity, here are some helpful methods that you may not have seen before.

Prefix & Suffix Methods

start_with? & end_with? return boolean results based on whether the beginning or end of a string match the provided string.
delete_suffix and delete_prefix remove from the beginning or end of a string if the suffix or prefix match the provided string.

Percent String Literals

Besides %(...) which creates a String, the % may create other types of object. As with strings, an uppercase letter allows interpolation and escaped characters while a lowercase letter disables them. For the two array forms of percent string, if you wish to include a space in one of the array entries you must escape it with a “\” character.
These are the types of percent strings in ruby:
%i - Array of Symbols
%q - String
%r - Regular Expression
%s - Symbol
%w - Array of Strings
%x - Backtick (capture subshell result)

Convert Number to an Array of Digits

the digits method returns an array of a number's digits in reverse.
123.digits => [3, 2, 1]

The Object Tap Method

The tap method allows you to perform an action on an object then return the object.
Instead of:

user = User.new
user.name = "John"
user
Enter fullscreen mode Exit fullscreen mode

You can write:

User.new.tap { |user| user.name = "John" }
Enter fullscreen mode Exit fullscreen mode

The new object will be returned after performing the operation which avoids using a temporary variable.

Transforming Multiple Hash Values

When you need to transform all of the values in a hash, say doubling your inventory, you can use the transform_values method.
Instead of:

inventory = {item_A: 200, item_B: 300}
inventory.each { |k,v| h[k] = v*2 }
Enter fullscreen mode Exit fullscreen mode

You can use:

inventory = {item_A: 200, item_B: 300}
inventory.transform_values! { |v| v * 2 }
{:item_A=>400, :item_B=>600}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)