Sha256: 55c4482d030c03a75aa986a8b9352517bb6891c344a6757b3d5c6748bf2f7538
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
# -*- encoding: utf-8 -*- module Aequitas module Context # Module with validation context functionality. # # Contexts are implemented using a thread-local array-based stack. # Execute a block of code within a specific validation context # # @param [Symbol] context # the context to execute the block of code within # # @api semipublic def self.in_context(context) stack << context return_value = yield ensure stack.pop return_value end # Get the current validation context or nil (if no context is on the stack). # # @return [Symbol, NilClass] # The current validation context (for the current thread), # or nil if no current context is on the stack def self.current stack.last end # Are there any contexts on the stack? # # @return [Boolean] # true/false whether there are any contexts on the context stack # # @api semipublic def self.any?(&block) stack.any?(&block) end # The (thread-local) validation context stack # This allows object graphs to be saved within potentially nested contexts # without having to pass the validation context throughout # # @api private def self.stack Thread.current[:dm_validations_context_stack] ||= [] end end # module Context end # module Aequitas
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
aequitas-0.0.2 | lib/aequitas/context.rb |
aequitas-0.0.1 | lib/aequitas/context.rb |