def custom_fields_methods(&filter)
      self.custom_fields_recipe['rules'].map do |rule|
        method = self.custom_fields_getters_for rule['name'], rule['type']
        if block_given?
          filter.call(rule) ? method : nil
        else
          method
        end
      end.compact.flatten
    end
def custom_fields_methods(&filter)
      self.custom_fields_recipe['rules'].map do |rule|
        method = self.custom_fields_getters_for rule['name'], rule['type']
        if block_given?
          filter.call(rule) ? method : nil
        else
          method
        end
      end.compact.flatten
    end
Return the list of the getters dynamically based on the
 custom_fields recipe in order to get the formatted values
 of the custom fields.
 If a block is passed, then the list will be filtered accordingly with
 the following logic. If the block is evaluated as true, then the method
 will be kept in the list, otherwise it will be removed.

 @example
   # keep all the methods except for the field named 'foo'
   project.custom_fields_methods do |rule|
     rule['name] != 'foo'
   end

 @return [ List ] a list of method names (string)