Sha256: 1f58b262ab84b48d19ca6dc0e206d62f809cf4044b66c0c17a604a2f89cdb4a3

Contents?: true

Size: 1.28 KB

Versions: 6

Compression:

Stored size: 1.28 KB

Contents

require 'annotatable'
require 'simpleton'
require 'radiant/admin_ui'

module Radiant
  class Extension
    include Simpleton
    include Annotatable

    annotate :version, :description, :url, :root, :extension_name

    attr_writer :active

    def active?
      @active
    end
    
    def migrator
      ExtensionMigrator.new(self)
    end

    def admin
      AdminUI.instance
    end

    def meta
      self.class.meta
    end

    class << self

      def activate_extension
        return if instance.active?
        instance.activate if instance.respond_to? :activate
        ActionController::Routing::Routes.reload
        instance.active = true
      end
      alias :activate :activate_extension

      def deactivate_extension
        return unless instance.active?
        instance.active = false
        instance.deactivate if instance.respond_to? :deactivate
      end
      alias :deactivate :deactivate_extension

      def define_routes(&block)
        route_definitions << block
      end

      def inherited(subclass)
        subclass.extension_name = subclass.name.to_name('Extension')
      end

      def meta
        Radiant::ExtensionMeta.find_or_create_by_name(extension_name)
      end

      def route_definitions
        @route_definitions ||= []
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
radiant-0.6.5.1 lib/radiant/extension.rb
radiant-0.6.5 lib/radiant/extension.rb
radiant-0.6.6 lib/radiant/extension.rb
radiant-0.6.7 lib/radiant/extension.rb
radiant-0.6.8 lib/radiant/extension.rb
radiant-0.6.9 lib/radiant/extension.rb