class

OpenStruct

v1_8_6_287 - Show latest stable - Superclass: Object

OpenStruct allows you to create data objects and set arbitrary attributes. For example:

  require 'ostruct'

  record = OpenStruct.new
  record.name    = "John Smith"
  record.age     = 70
  record.pension = 300

  puts record.name     # -> "John Smith"
  puts record.address  # -> nil

It is like a hash with a different way to access the data. In fact, it is implemented with a hash, and you can initialize it with one.

  hash = { "country" => "Australia", :population => 20_000_000 }
  data = OpenStruct.new(hash)

  p data        # -> <OpenStruct country="Australia" population=20000000>

Constants

InspectKey = :__inspect_key__

Attributes

[R]table

Files

  • lib/ostruct.rb

2Notes

Like JavaScript Object

tadman · May 19, 20092 thanks

For those familiar with JavaScript naked Objects, this is very similar.

Like Groovy Expando

matthias · Jul 17, 2009

If you're coming from Groovy/Grails: this is called an Expando in Groovy.