Module: ChrnoAudit::ActionControllerConcern::ClassMethods
- Defined in:
- lib/chrno_audit/action_controller_concern.rb
Instance Method Summary collapse
-
#audit_context(proc_or_symbol = nil, &block) ⇒ Object
Хелпер для установки контекста аудита.
Instance Method Details
#audit_context(proc_or_symbol = nil, &block) ⇒ Object
Хелпер для установки контекста аудита.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/chrno_audit/action_controller_concern.rb', line 19 def audit_context( proc_or_symbol = nil, &block ) # Получаем Proc для генерации контекста context_generator = # Если задан блок -- используем его if block_given? block # Если указан символ, то вызываем соответствующий метод elsif proc_or_symbol.is_a? Symbol Proc.new { self.send proc_or_symbol } # Если указан Proc -- используем его elsif proc_or_symbol.is_a? Proc proc_or_symbol else raise ArgumentError, "Proc or Symbol expected, got: #{proc_or_symbol.inspect}" end before_filter do |controller| # NB: согласно документации Ruby в Thread.current хранятся per-fiber атрибуты! Thread.current[ :audit_context ] = Proc.new { controller.instance_exec( &context_generator ) } end end |