Как стать автором
Поиск
Написать публикацию
Обновить

Рецепты: Свои наборы обработчиков событий

Время на прочтение1 мин
Количество просмотров912
Думаю, большинство из пользователей Ruby работали с 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
Теги:
Хабы:
Всего голосов 16: ↑13 и ↓3+10
Комментарии3

Публикации

Ближайшие события