Sha256: f0cdaa4f72f8cbf0eb9ee28f502503324b0c32d0828615bd84dc8aac3a0381e6

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module ActiveFile

  class Base < ActiveHash::Base
    class_inheritable_accessor :filename, :root_path, :data_loaded

    class << self

      def all
        reload unless data_loaded
        super
      end

      def delete_all
        self.data_loaded = true
        super
      end

      def reload(force = false)
        return if !self.dirty && !force && self.data_loaded
        self.data_loaded = true
        self.data = load_file
        mark_clean
      end

      def set_filename(name)
        write_inheritable_attribute :filename, name
      end

      def set_root_path(path)
        write_inheritable_attribute :root_path, path
      end

      def load_file
        raise "Override Me"
      end

      def full_path
        root_path = read_inheritable_attribute(:root_path)  || Dir.pwd
        filename  = read_inheritable_attribute(:filename)   || name.tableize
        File.join(root_path, "#{filename}.#{extension}")
      end

      def extension
        raise "Override Me"
      end

      protected :extension

    end
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_hash-0.8.3 lib/active_file/base.rb
active_hash-0.8.2 lib/active_file/base.rb
active_hash-0.8.1 lib/active_file/base.rb