Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

77 lines (53 sloc) 2.01 kB


Hashie is a growing collection of tools that extend Hashes and make them more useful.


Hashie is a gem and is available on Gemcutter. If you don't have Gemcutter, install it:

gem install gemcutter
gem tumble

Then you can install Hashie:

gem install hashie


Mash is an extended Hash that gives simple pseudo-object functionality that can be built from hashes and easily extended. It is designed to be used in RESTful API libraries to provide easy object-like access to JSON and XML parsed hashes.


mash = # => false # => nil = "My Mash" # => "My Mash" # => true
mash.inspect # => <Hashie::Mash name="My Mash">

mash =
# use bang methods for multi-level assignment!.name = "Michael Bleigh" # => <Hashie::Mash name="Michael Bleigh">


Dash is an extended Hash that has a discrete set of defined properties and only those properties may be set on the hash. Additionally, you can set defaults for each property.


class Person < Hashie::Dash
  property :name
  property :email
  property :occupation, :default => 'Rubyist'

p = # => nil
p.occupation # => 'Rubyist' = '' # => ''
p['awesome'] # => NoMethodError

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don't break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.


  • Michael Bleigh


Copyright © 2009 Intridea, Inc ( See LICENSE for details.

Jump to Line
Something went wrong with that request. Please try again.