Sha256: 3ef6cb9190ec3d99a31ee96d142489ff5addffcefcb5168fc0138c25cb54d58f

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

module CachedResource
  # The Model module is included in ActiveResource::Base and
  # provides methods to enable caching and manipulate the caching
  # configuration
  module Model
    extend ActiveSupport::Concern

    included do
      class << self
        attr_accessor :cached_resource

        # Initialize cached resource or retrieve the current cached resource configuration.
        def cached_resource(options = {})
          defined?(@cached_resource) && @cached_resource || setup_cached_resource!(options)
        end

        # Set up cached resource for this class by creating a new configuration
        # and establishing the necessary methods.
        def setup_cached_resource!(options)
          @cached_resource = CachedResource::Configuration.new(options)
          send :include, CachedResource::Caching
          @cached_resource
        end
      end
    end

    module ClassMethods
      # Copy a superclass's cached resource configuration if
      # it's defined.  Unfortunately, this means that any subclass
      # that wants an independent configuration will need to execute:
      # self.cached_resource = CachedResource::Configuration.new(options={})
      def inherited(child)
        child.cached_resource = cached_resource if defined?(@cached_resource)
        super
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cached_resource-9.0.0 lib/cached_resource/cached_resource.rb