Sha256: fdaf92cffa1c3b91e463fd432387f7cd51ef646b3c566b7b00578ddc7255ce1c

Contents?: true

Size: 765 Bytes

Versions: 1

Compression:

Stored size: 765 Bytes

Contents

module ActiveRecordYaml
  class Model
    extend ActiveModel::Naming

    def self.all
      items
    end

    def self.first
      items.first
    end

    def self.last
      items.last
    end

    def self.count
      items.length
    end

    def self.items
      data = File.read(data_filename)
      YAML.load(data).map { |x| OpenStruct.new(x) }
    end

    def self.method_missing(m, *args, &block)
      key = ActiveSupport::Inflector.singularize(m)
      all.map(&:"#{key}")
    rescue
      super
    end

    def self.respond_to_missing?(m, include_private = false)
      super
    end

    def self.data_filename
      data_dir.join("#{model_name.plural}.yml")
    end

    def self.data_dir
      Rails.root.join("config", "data")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_record_yaml-0.2.0 lib/active_record_yaml/model.rb