Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # frozen_string_literal: true
- # :nodoc:
- class ActiveBusiness
- attr_reader :resolver
- def initialize
- @resolver = ActiveBusiness::Resolver.new
- yield resolver
- end
- def resolve_to(action)
- @resolver.responses.fetch(action) { fail("#{action} not implemented") }
- end
- # ActiveBusiness response resolver
- class Resolver
- attr_reader :responses
- def initialize
- @responses = {}
- end
- def sucess(&block)
- fail 'Response must receive a block!' unless block_given?
- @responses[:sucess] = block
- end
- def error(&block)
- fail 'Response must receive a block!' unless block_given?
- @responses[:error] = block
- end
- def method_missing(name, *_args, &block)
- # In case success and error not being enough
- fail 'Response must receive a block!' unless block_given?
- @responses[name] = block
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement