We recently have switched one of our apps to Ruby 2.2 and I did not know what exactly is behind it so I decided to do a research and learn something new. A detailed list of changes introduced in version 2.2 can be found in Github.
`Method#super_method`
class Animal def sound "Whoa" end end class Dog < Animal def sound "Hau Hau" end end dog = Dog.new dog.public_method(:sound).call => "Hau Hau" dog.public_method(:sound).super_method.call => "Whoa"
`Enumerable#slice_after`
array = (1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] array.slice_after(&:even?).to_a => [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
`Enumerable#max` and `Enumerable#min`
array = (1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] array.max 2 => [10, 9] array.min 3 => [1, 2, 3]
`Enumerable#max_by` and `Enumerable#min_by`
words = %w(a ab abc) => ["a", "ab", "abc"] words.max_by 2, &:length => ["abc", "ab"] # array words.min_by &:length => "a" # string
`File#birthtime`
This one is very self explanatory, it returns the birth time for the named file:
File.birthtime('ruby-2-2.jpg') => 2015-05-12 16:59:04 +0200
`Kernel#itself`
`itself` method was the most mysterious for me at the beginning, it returns the object it is called on:
1.itself => 1 "Foo".itself => "Foo"
OK, but what can it be used for? Maybe for grouping?
random_array = [1, 2, 3] * 3 => [1, 2, 3, 1, 2, 3, 1, 2, 3] random_array.group_by(&:itself) => {1=>[1, 1, 1], 2=>[2, 2, 2], 3=>[3, 3, 3]}
It works!
What else?
The above methods are the most useful for me. There are other methods introduced in Ruby 2.2 like `Float#next_float`, `String#unicode_normalize` and `Matrix#first_minor` so if you are looking for more details check Github NEWS.