Skip to content

Instantly share code, notes, and snippets.

@serradura
Created June 29, 2021 12:36
Show Gist options
  • Save serradura/68a76b631ba25bac0832597945cfc331 to your computer and use it in GitHub Desktop.
Save serradura/68a76b631ba25bac0832597945cfc331 to your computer and use it in GitHub Desktop.
u-observers - 101
# https://github.com/serradura/u-observers/blob/main/README.pt-BR.md
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'u-observers'
end
class Person
include Micro::Observers
attr_reader :name
def initialize(name)
@name = name
end
def name=(new_name)
return if @name == new_name
@name = new_name
observers.notify!(:name_has_been_changed)
end
end
person = Person.new('Marcelo')
person.observers.on(
event: :name_has_been_changed,
with: -> event { event.subject.name },
call: -> new_name { puts "The person new name is: #{new_name}" }
)
person.name = 'Barbosa'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment