class ActiveAdmin::AbstractViewFactory

def self.add_writer(name)

def self.add_writer(name)
  define_singleton_method("#{name}=") do |value|
    value.builder_method name
    instance_variable_set :"@#{name}", value
  end
end

def self.register(view_hash)

def self.register(view_hash)
  view_hash.each do |view_key, view_class|
    super view_key, view_class
    add_writer(view_key)
    send "#{view_key}=", view_class
  end
end

def [](key)

def [](key)
  send key
end

def []=(key, value)

def []=(key, value)
  send "#{key}=", value
end

def default_for(key)

def default_for(key)
  self.class.send key
end

def register(view_hash)


another_view: OtherViewClass
factory.register my_view: SomeClass,

You can setup many at the same time:

factory.register my_view: SomeViewClass
factory = AbstractViewFactory.new

eg:

Register a new view key with the view factory
def register(view_hash)
  self.class.register view_hash
end