Module: Gate::Rails::ClassMethods
- Defined in:
- lib/gate/rails.rb
Instance Method Summary collapse
- #_contracts ⇒ Object
- #contract(klass = nil, handler: :handle_invalid_params, &block) ⇒ Object
- #contract_for(contract_name) ⇒ Object
- #handler_for(contract_name) ⇒ Object
- #method_added(method_name) ⇒ Object
Instance Method Details
#_contracts ⇒ Object
14 15 16 |
# File 'lib/gate/rails.rb', line 14 def _contracts @_contracts ||= {} end |
#contract(klass = nil, handler: :handle_invalid_params, &block) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/gate/rails.rb', line 30 def contract(klass = nil, handler: :handle_invalid_params, &block) @_contract = { contract: klass ? klass.new : Dry::Validation.Contract(&block), handler: handler, } end |
#contract_for(contract_name) ⇒ Object
18 19 20 21 22 |
# File 'lib/gate/rails.rb', line 18 def contract_for(contract_name) _contracts.fetch(contract_name) do raise ContractNotDefined, "Missing `#{contract_name}` contract" end.fetch(:contract) end |
#handler_for(contract_name) ⇒ Object
24 25 26 27 28 |
# File 'lib/gate/rails.rb', line 24 def handler_for(contract_name) _contracts.fetch(contract_name) do raise ContractNotDefined, "Missing `#{contract_name}` contract" end.fetch(:handler) end |
#method_added(method_name) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/gate/rails.rb', line 37 def method_added(method_name) if instance_variable_defined?(:@_contract) _contracts[method_name] = @_contract remove_instance_variable(:@_contract) end super end |