An ActiveRecord 3.x Ruby gem for attribute serialization.
"Dy-na-bix, tasty serialization attribute accessors for ActiveRecord"
Dynabix dynamically creates read/write accessors on ActiveRecord models for storing attributes in a serialized Hash. Read more in our introductory blog article.
ActiveRecord's native 'store' method
ActiveRecord as of 3.2.1, has a very similar native method store. Dynabix differs from store by providing a declarative DSL for defining multiple stores (Ruby 1.9+), has separate read/write accessors, and stores to the database as HashWithIndifferentAccess. Unless you need one of these specific features, using the native 'store' method is recommended.
Add to your Gemfile
Install the gem
Get the source
cd workspace git clone https://github.com/robertwahler/dynabix.git cd dynabix
Install the dependencies
Run the specs
bundle exec rake spec
Autotest with Guard
bundle exec guard
Add a text column "metadata" to your model migration
class AddMetadataToThings < ActiveRecord::Migration def change add_column :things, :metadata, :text end end
Add accessors to your model using the default column name ":metadata", specify the attributes in a separate step.
class Thing < ActiveRecord::Base # full accessors :breakfast_food, :wheat_products, :needs_milk # read-only :friends_with_spoons end
Specifying attributes for full attribute accessors in one step
class Thing < ActiveRecord::Base :metadata, :breakfast_food, :wheat_products, :needs_milk end
Using the new accessors
thing = Thing.new thing.breakfast_food = 'a wheat like cereal" # same thing, but using the hash directly thing.metadata[:breakfast_food] = 'a wheat like cereal"
Dynabix under Ruby 1.9+ enables specifying multiple metadata columns on a model.
Add text columns "cows" and "chickens" to your model migration
class AddMetadataToThings < ActiveRecord::Migration def change add_column :things, :cows, :text add_column :things, :chickens, :text end end
Specifying multiple metadata serializers (Ruby 1.9 only)
class Thing < ActiveRecord::Base :cows :chickens, :tasty, :feather_count # read-only cows_reader :likes_milk, :hates_eggs # write-only cows_writer :no_wheat_products # extra full accessors for chickens chickens_accessor :color, :likes_eggs end
- Activerecord 3.x
- Bundler for dependency management http://github.com/carlhuda/bundler
- Rspec for unit testing http://github.com/rspec/rspec
- Yard for documentation generation http://github.com/lsegal/yard
bundle exec rake -T
rake build # Build dynabix-0.0.2.gem into the pkg directory rake doc:clean # Remove generated documenation rake doc:generate # Generate YARD Documentation rake doc:undocumented # List undocumented objects rake gemfiles # Generate .gemfiles via 'git ls-files' rake install # Build and install dynabix-0.0.2.gem into system gems rake release # Create tag v0.0.2 and build and push dynabix-0.0.2.gem to Rubygems rake spec # Run RSpec
Copyright (c) 2012-2017 GearheadForHire, LLC. See LICENSE for details.