Caller & Pry

Когда у меня отказывают мозги, я берусь за отладчик.
Если бы не необходимость писать код, я бы из него не вылезал вообще.
И отсутствие толкового отладчика в Ruby меня до сих пор очень расстраивает.

Представим себе ситуацию: в трёх практически одинаковых контроллерах по
совершенно идентичному набору параметров производятся абсолютно одинаковые
действия. Результат этих действий - заполненная этими действиями форма добавления
объекта в таблицу. Десять отличий между тремя вариантами найдены, вынесены в параметры,
всё отлично заполняется, но: в двух случаях заполненные данные попадают куда надо,
в третьем - хрррррр!

Начинаем копать всякие before_filter, фильтры в самой модели - ничего.

Отладчика, которым мне не больно и не противно было бы пользоваться, в наличии нет.
(Любители IDE идут в обнимку с их IDE куда-нибудь, где java не тормозит под убунтой).

Итак, отладчика нет, а брэйкпоинт поставить надо. Аккуратно добавляем в исследуемую модель
конструктор:

weird_model.rb
def initialize(*args)
binding.pry
super
end

и, как только pry выбрасывает нас в консоль, смотрим значение, возвращаемое caller.

В результате выяснилось, что второй экземпляр модели создавался во вьюхе.
Баг пофикшен, блогпост написан, кому уходит луч поноса - тоже ясно.

Осталось вычистить все binding.pry и всю байду, которую добавил в процессе отладки.

Список используемой литературы