Ruby <= You are Awesome!

I was just making some updates to the Ruby client I wrote for the Splunk REST API and wanted to point out one of the most wonderful facets of the language: The ability to dynamically generate methods to support a more natural interface.

Take this standard XML response from Splunk’s REST interface for search results:

Normally, using Nokogiri or another XML parsing library, you would need to do this to access the list of hosts (and any other Splunk field):

@doc = Nokogiri.parse(xmlResponse)
@doc.results.result.each do |result|
puts result.field("[@k=\"host\"]").value.text
end

Yuck! Especially when the response format is standard and predictable. Enter Ruby’s awesome overrides and the method_missing method. Using the method_missing method, we can intercept what would normally be an exception and dynamically respond to method calls for Splunk fields without actually having to write those methods.

Now I can access those XML fields with a simple method call, in this case .host:

job.parsedResults.each do |result|
puts result.host #Or any other field!
end

Cool, huh? Can’t do that in Java. Check-out the library on Github.

This entry was posted in code. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *