adamphillips/activeadmin-cms

View on GitHub
lib/active_admin/cms/utility/class_level_inheritable_attributes.rb

Summary

Maintainability
A
0 mins
Test Coverage
module ActiveAdmin
  module Cms
    module Utility
      module ClassLevelInheritableAttributes
        def self.included(base)
          base.extend(ClassMethods)    
        end

        module ClassMethods
          def cattr_inheritable(*args)
            @cattr_inheritable_attrs ||= [:cattr_inheritable_attrs]
            @cattr_inheritable_attrs += args
            args.each do |arg|
              class_eval %(
                class << self; attr_accessor :#{arg} end
              )
            end
            @cattr_inheritable_attrs
          end

          def inherited(subclass)
            @cattr_inheritable_attrs.each do |inheritable_attribute|
              instance_var = "@#{inheritable_attribute}" 
              subclass.instance_variable_set(instance_var, instance_variable_get(instance_var))
            end
          end
        end
      end
    end
  end
end