Ruby ROXML - how to get an array to render its xml?
- by Brian D.
I'm trying to create a Messages object that inherits Array. The messages will gather a group of Message objects. I'm trying to create an xml output with ROXML that looks like this:
<messages>
    <message>
        <type></type>
        <code></code>
        <body></body>
    </message>
    ...
</messages>
However, I can't figure out how to get the message objects in the Messages object to display in the xml. Here is the code I've been working with:
require 'roxml'
class Message
  include ROXML
  xml_accessor :type
  xml_accessor :code
  xml_accessor :body
end
class Messages < Array
  include ROXML
  # I think this is the problem - but how do I tell ROXML that
  # the messages are in this instance of array?
  xml_accessor :messages, :as => [Message]
  def add(message)
    self << message
  end
end
message = Message.new
message.type = "error"
message.code = "1234"
message.body = "This is a test message."
messages = Messages.new
messages.add message
puts messages.length
puts messages.to_xml
This outputs:
1
<messages/>
So, the message object I added to messages isn't getting displayed. Anyone have any ideas? Or am I going about this the wrong way?
Thanks for any help.