Marshal Ruby classes into and out of multiple formats (yaml, json, csv, tsv)
require 'storable' class Machine < Storable field :environment # Define field names for Machine. The field :role # default type is String, but you can field :position => Integer # specify a type using a hash syntax. end mac1 = Machine.new # Instances of Machine have accessors mac1.environment = "stage" # just like regular attributes. mac1.role = "app" mac1.position = 1 puts "# YAML", mac1.to_yaml # Note: the field order is maintained puts "# CSV", mac1.to_csv # => stage,app,1 puts "# JSON", mac1.to_json # Note: field order not maintained. mac2 = Machine.from_yaml(mac1.to_yaml) puts mac2.environment # => "stage" puts mac2.position.class # => Fixnum
Via Rubygems, one of:
$ sudo gem install storable $ sudo gem install delano-storable --source http://gems.github.com/
or via download:
-
Ruby 1.8, Ruby 1.9, or JRuby 1.2
-
Pierre Riteau (priteau) for bug fixes.
-
Delano Mandelbaum (delano@solutious.com)
-
OrderedHash implementation by Jan Molic
See: LICENSE.txt