Думаю, большинство из пользователей Ruby работали с Rails, и использовали их обработчики событий.
Польза от них очевидна:
И я покажу, как это делать:
Для работы данного функционала нужен gem active_support (входит в состав rails, но может использоваться и отдельно).
Чуть не забыл, цепочка обработчиков событий в данном случае будет вызвана при вызове метода экземпляра
validate :validate_humanity_conflicts
validates_presence_of :radius # это не обработчик события, но декларация
Польза от них очевидна:
- Декларативность описания поведения, когда мы видим особенности классов по декларациям в его начале;
- Возможность создавать наборы из обработчиков событий, не заморачиваясь на управление ими.
И я покажу, как это делать:
class AnyClass
include ActiveSupport::Callbacks # already included by ActiveRecord::Base
define_callbacks :after_something
def after_something
run_callbacks(:after_something)
end
end
class ChildClass < AnyClass
after_something :eliminate_frags
def eliminate_frags
# do it
true # to stop callback chain return false
end
end
Для работы данного функционала нужен gem active_support (входит в состав rails, но может использоваться и отдельно).
Чуть не забыл, цепочка обработчиков событий в данном случае будет вызвана при вызове метода экземпляра
after_something