def subject &block
      @subject ||= CLIntegracon::shared_config.subject.dup
      return @subject if block.nil?
      instance_exec(@subject, &block)
    end
def subject &block
      @subject ||= CLIntegracon::shared_config.subject.dup
      return @subject if block.nil?
      instance_exec(@subject, &block)
    end
Get or configure the current subject

 @note On first call this will create a new subject on base of the
       shared configuration and store it in the ivar `@subject`.

 @param  [Block<(Subject) -> ()>]
         This block, if given, will be evaluated on the caller.
         It receives as first argument the subject itself.

 @return [Subject]
         the subject