Skip to content
OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs
Find file
New pull request
Latest commit 828db65 @aetherknight Merge pull request #31 from pyeremenko/master
Minor changes in README


OpenStruct subclass that returns nested hash attributes as RecursiveOpenStructs.

It allows for hashes within hashes to be called in a chain of methods:

ros = { :fooa => { :foob => 'fooc' } } )

ros.fooa.foob # => 'fooc'

Also, if needed, nested hashes can still be accessed as hashes:

ros.fooa_as_a_hash # { :foob => 'fooc' }

RecursiveOpenStruct can also optionally recurse across arrays, although you have to explicitly enable it:

h = { :somearr => [ { :name => 'a'}, { :name => 'b' } ] }

ros =, :recurse_over_arrays => true )

ros.somearr[0].name # => 'a'
ros.somearr[1].name # => 'b'


Available as a gem in rubygems, the default gem repository.

If you use bundler, just throw that in your gemfile :

gem 'recursive-open-struct'

You may also install the gem manually :

gem install recursive-open-struct


  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for your new or changed functionality. Make sure the tests you add provide clean and clear explanation of the feature.
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2009-2015 William (B.J.) Snow Orvis. See LICENSE for details.

Something went wrong with that request. Please try again.