ActiveRecord::Callbacks
Готовим правильно
Павел Габриель / @alovak
AR::Callbacks
before_create / save / update / validate
after_*
Что не так с AR::Callbacks?
“That’s a total of twelve callbacks,
which gives you immense power
to react and prepare for each state
in the ActiveRecord...
“That’s Ruby, which gives you
immense power to do, you know,
pretty much anything, ever”
— Ernie Miller
Google
“Are ActiveRecord Callbacks Any Good?”
“ActiveRecord Callbacks are Unreasonable”
“Rails, callbacks, workers, and th...
“ActiveRecord's Callbacks
Ruined My Life”
В чем же проблема?
Проблема? 
Single Responsibility Principle
“A class should do the smallest
possible useful thing; that is,
it should have
a single responsibility.”
— Sandi Metz
SRP Violation

К лишнему весу ..
SRP Violation

К усложнению кода
SRP Violation
К сложным тестам
Невозможности повторного
использования
И т.д.
Варианты решений
Вариант с Dependency
Injection
Вариант с Service
Вариант с Events/Signals
ActiveSupport::Notifications
Wisper (gem)
• Минимизируйте зависимости с
помощью Dependency Injection
• Объединяйте несколько моделей в
Service
• Используйте Events/...
“Rails makes it natural and easy to build
large, well-designed OOP systems.”
— ????????
“Rails makes it natural and easy to build
large, well-designed OOP systems.”
— Nobody
Rails has no brain;
use your own!
Спасибо!
alovak@gmail.com
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
ActiveRecord::Callbacks. Готовим правильно.
Upcoming SlideShare
Loading in …5
×

ActiveRecord::Callbacks. Готовим правильно.

1,903 views

Published on

В презентации затронуты основные проблемы связанные с использованием ActiveRecord::Callbacks, а также предложены способы их избежать.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,903
On SlideShare
0
From Embeds
0
Number of Embeds
1,144
Actions
Shares
0
Downloads
4
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

ActiveRecord::Callbacks. Готовим правильно.

  1. 1. ActiveRecord::Callbacks Готовим правильно Павел Габриель / @alovak
  2. 2. AR::Callbacks before_create / save / update / validate after_*
  3. 3. Что не так с AR::Callbacks?
  4. 4. “That’s a total of twelve callbacks, which gives you immense power to react and prepare for each state in the ActiveRecord life cycle.” — active_record/callbacks.rb
  5. 5. “That’s Ruby, which gives you immense power to do, you know, pretty much anything, ever” — Ernie Miller
  6. 6. Google “Are ActiveRecord Callbacks Any Good?” “ActiveRecord Callbacks are Unreasonable” “Rails, callbacks, workers, and the race you never expected to lose”
  7. 7. “ActiveRecord's Callbacks Ruined My Life”
  8. 8. В чем же проблема?
  9. 9. Проблема? 
  10. 10. Single Responsibility Principle
  11. 11. “A class should do the smallest possible useful thing; that is, it should have a single responsibility.” — Sandi Metz
  12. 12. SRP Violation К лишнему весу ..
  13. 13. SRP Violation К усложнению кода
  14. 14. SRP Violation К сложным тестам Невозможности повторного использования И т.д.
  15. 15. Варианты решений
  16. 16. Вариант с Dependency Injection
  17. 17. Вариант с Service
  18. 18. Вариант с Events/Signals
  19. 19. ActiveSupport::Notifications
  20. 20. Wisper (gem)
  21. 21. • Минимизируйте зависимости с помощью Dependency Injection • Объединяйте несколько моделей в Service • Используйте Events/Signals
  22. 22. “Rails makes it natural and easy to build large, well-designed OOP systems.” — ????????
  23. 23. “Rails makes it natural and easy to build large, well-designed OOP systems.” — Nobody
  24. 24. Rails has no brain; use your own!
  25. 25. Спасибо! alovak@gmail.com

×