Sha256: e1a1a2fb824289f1d7e932e7ff4cdcf995dfe3ed264072a00718d914cc31e520

Contents?: true

Size: 1.02 KB

Versions: 4

Compression:

Stored size: 1.02 KB

Contents

require 'corvette/assertion'
require 'corvette/act'
module Corvette
	class Procedure < Act

		include Validation
		include Auxiliary
		include Required

		def procedure(params)
			procedure_log(:start)
			process_params(params)
			process_auxiliary
			process_required
			procedure_validate(params)
			yield
			act_success
			procedure_log(:end)
		rescue StandardError => exception
			log_error(exception, params)
			act_error(exception)
		end

		private

		def procedure_validate(params)
			model = OpenStruct.new
			contract = contract_klass.new(model)

			unless contract.validate(params)
				exception = ValidationError.new("validation failed")
				exception.errors = contract.errors.messages
				raise exception
			end
			procedure_log(:validation_success)
		end

		def procedure_log(kind)
			case kind
			when :start
				logger.info "procedure started (#{act_name})"
			when :end
				logger.info "procedure ended (#{act_name})"
			when :validation_success
				logger.info "params validation succeeded (#{act_name})"
			end
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
corvette-0.0.5 lib/corvette/procedure.rb
corvette-0.0.4 lib/corvette/procedure.rb
corvette-0.0.3 lib/corvette/procedure.rb
corvette-0.0.2 lib/corvette/procedure.rb