# frozen_string_literal: true module WithServiceHelper def result @_result end # @param service [Class] A class including {Service::Base} # @param dependencies [kwargs] Any additional params to load into the service context, # in addition to controller @params. def with_service(service, **dependencies, &block) object = self ServiceRunner.call( service, object, **dependencies, &proc { instance_exec(&(block || proc {})) } ) end def run_service(service, dependencies) params = self.try(:params) || ActionController::Parameters.new @_result = service.call(params.to_unsafe_h.merge(guardian: self.try(:guardian) || nil, **dependencies)) end end