Dynamically Generated Classes

To create a class with a dynamic name in Ruby, create a new Class object and then set it as a constant within Object:

Object.const_set('ChunkyBacon', Class.new)
=> ChunkyBacon
>> ChunkyBacon.new
=> #<ChunkyBacon:0x5ef740>

You can use this to good effect with ActiveResource, creating arbitrary restful resources as you go:

Object.const_set(model, Class.new(ActiveResource::Base))
@class = model.constantize
@class.site = site
@class.new.save