Отличный пост про оптимизацию руби кода для выполнения на MRI. Однако, один из советов одно время обходился мне граблями, примерно такого рода:
>> "barbarbarbar".gsub(/buz/,'foo')
=> "barbarbarbar"
>> "barbarbarbar".gsub!(/buz/,'foo')
=> nil
То есть мало того, что данные методы ведут себя по-разному относительно исходной строки, они и возвращают разный результат, если в строке нет заменяемой подстроки. Так что слепое следование этому совету может поломать существующий код, широко использующий method chaining. Я категорически против этого конкретного примера данного совета, хотя совет вообще замечателен и мною широко применяется в жизни.
