def combine_parts(parts)
			parts.size.downto(1).with_object([]) do |i, arr|
				arr.push(*parts.combination(i).to_a)
			end
			# variants.uniq!.reject!(&:empty?)
		end
def combine_parts(parts)
			parts.size.downto(1).with_object([]) do |i, arr|
				arr.push(*parts.combination(i).to_a)
			end
			# variants.uniq!.reject!(&:empty?)
		end
Make combinations in order with different sizes
 @example Make parts for ['project', 'namespace', 'controller']
   # => [
          ['project', 'namespace', 'controller'],
          ['project', 'namespace'],
          ['namespace', 'controller'],
          ['namespace']
        ]