Метод non-bang downcase () просто возвращает новый объект, представляющий строку в нижнем регистре.
Версия взрыва изменяет вашу строку.
my_text = "MY TEXT"
my_new_text = my_text.downcase
puts my_new_text # will print out "my text"
puts my_text # will print out "MY TEXT" - the non-bang method doesn't touch it
my_text.downcase!
puts my_text # will print out "my text". The bang version has modified the object you're calling the method on