def namespaces
    @namespaces ||= Set.new namespace_values.map do |value|
      (value.respond_to?(:call) ? value.call : value).to_s
    end
  end
def namespaces
    @namespaces ||= Set.new namespace_values.map do |value|
      (value.respond_to?(:call) ? value.call : value).to_s
    end
  end
Internal: Sets the namespaces for the set from a variety of objects and
 processes them by checking to see if they can be 'called'.

 Examples:

   namespace_set             = NamespaceSet.new

   # Can be set to an array
   namespace_set.namespaces  = %w{namespace_value_1 namespace_value_2}
   namespace_set.namespaces
   # => ['namespace_value_1', 'namespace_value_2']

   # Can be set to a hash
   namespace_set.namespaces  = { environment:  'development',
                                 hostname:     'my host' }
   namespace_set.namespaces
   # => ['development', 'my host']

   # Can be set to a NamespaceSet
   namespace_set.namespaces  = NamespaceSet.new('development')
   namespace_set.namespaces
   # => ['development']

   # Can be set to a single value
   namespace_set.namespaces  = 'development'
   namespace_set.namespaces
   # => ['development']

   # Can be set to a callable
   namespace_set.namespaces  = { environment:  -> { 'called' } }
   namespace_set.namespaces
   # => ['called']

   # Does not allow duplicate items
   namespace_set.namespaces  = %w{namespace_value namespace_value}
   namespace_set.namespaces
   # => ['namespace_value']