Мой первый опыт контрибьюта в Open Source
Наконец то смог внести небольшой вклад в Ruby-сообщество и исправить маленький баг в геме :)
контекст
ar_lazy_peload - удобный гем от EvilMartians для устранения N+1 (особенно удобен при написании GraphQL API). Является неким аналогом предзагрузки ассоциации .includes
, но загружает только те ассоциации что были запрошены по факту, а не автоматически все перечисленные в .includes
.
Гем использовался в приложении Rails 6.1 + Ruby 3.0.2
баг
Баг удалось обнаружить лишь благодаря контексту нашего приложения, в котором этому гему пришлось работать:
- Rails 6.1
- Ruby 3.0.2
enum
аттрибут в модели ActiveRecord, где одно из значении -owner
Попытки сделать запросы к этой модели вызывали ошибку Stack level is too deep
, по которой я создал issue на странице гема: link
решение
Проследив по стек-трейсу ошибки было найдено проблемное место. Оказалось что метод owner
уже определен в геме (через delegate
). Фикс оказался достаточно простым, и я оформил пулл-реквест с решением проблемы - link.
итого
Даже несмотря на то что баг который я пофиксил не являлся чем-то супер серьезным, тем не менее приятно от того, что тебе удалось помочь сообществу и ты теперь можешь видеть свое имя в контрибьюторах проекта :)