Sha256: 5137aa0076f3a0ab2cd51cf373ab36e74119c700fe5b488a8a42ecbedc728acb

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

module Freemium
  class FeatureSet

    def initialize(hash = {})
      hash.each do |key, value|
        self.class.class_eval { attr_accessor key.intern }
        self.send("#{key}=", value)
      end
    end
  
    def method_missing(method, *args, &block)
      # forward named routes
      if method.to_s.include? '?'
        send(method.to_s[0..-2], *args, &block)
      else
        super
      end
    end
 
    def self.find(id)
      self.feature_sets[id.to_s]
    end
 
    protected

    cattr_accessor :config_file
    def self.config_file
      @@config_file ||= File.join(RAILS_ROOT, 'config', 'freemium_feature_sets.yml')
    end

    cattr_accessor :feature_sets
    self.feature_sets = nil
 
    def self.feature_sets
      if @@feature_sets.nil?
        @@feature_sets = {}
        YAML::load(File.read(self.config_file)).each do |features| 
          feature_set = FeatureSet.new(features)
          @@feature_sets[feature_set.id] = feature_set
        end
      end
      @@feature_sets
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
freemium-0.0.2 lib/freemium/feature_set.rb
freemium-0.0.1 lib/freemium/feature_set.rb