Skip to content

Instantly share code, notes, and snippets.

@aminin
Created July 18, 2013 09:05
Show Gist options
  • Select an option

  • Save aminin/6027880 to your computer and use it in GitHub Desktop.

Select an option

Save aminin/6027880 to your computer and use it in GitHub Desktop.
# Годный метод для сериализации в yaml Mail::Message
class Mail::Message
# @return [String]
def to_yaml
hash = {}
hash['headers'] = {}
header.fields.each do |field|
hash['headers'][field.name] = field.value
end
hash['delivery_handler'] = delivery_handler.to_s if delivery_handler
hash['transport_encoding'] = transport_encoding.to_s
special_variables = [:@header, :@delivery_handler, :@transport_encoding]
if multipart?
hash['multipart_body'] = []
body.parts.map { |part| hash['multipart_body'] << part.to_yaml }
special_variables.push(:@body, :@text_part, :@html_part)
end
(instance_variables.map(&:to_sym) - special_variables).each do |var|
hash[var.to_s] = instance_variable_get(var)
end
YAML.dump(hash)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment