@@ -415,18 +415,31 @@ def After(&block)
415415 ( @after_blocks ||=[ ] ) << block
416416 end
417417
418+ def normalize_service_hook_args ( name , opts )
419+ if name . is_a? ( Hash ) && opts . empty?
420+ opts = name
421+ name = nil
422+ end
423+
424+ opts = opts . dup
425+ except = [ opts . delete ( :except ) ] . flatten . compact
426+ [ [ name ] . flatten . compact , opts , except ]
427+ end
428+
418429 def BeforeService ( name = nil , opts = { } , &block )
419- ( @before_blocks ||=[ ] ) . push names : [ name ] . flatten . compact , except : opts [ :except ] ,
430+ names , opts , except = normalize_service_hook_args ( name , opts )
431+ ( @before_blocks ||=[ ] ) . push names :, except :,
420432 block : -> ( s_name ) {
421433 _ServiceImplementation s_name , opts , &block
422434 }
423435 end
424436
425437 def AfterService ( name = nil , opts = { } , &block )
438+ names , opts , except = normalize_service_hook_args ( name , opts )
426439 After do
427- names = [ name || @services . keys ] . flatten
428- names -= [ opts [ :except ] ] . flatten if opts . key? : except
429- names . each do |s_name |
440+ hook_names = names . empty? ? @services . keys : names
441+ hook_names -= except
442+ hook_names . each do |s_name |
430443 _ServiceImplementation s_name , opts , &block
431444 end
432445 end
0 commit comments