class SimpleFeatures::Features

Attributes

features[RW]

Public Class Methods

load_config(config_file = nil) click to toggle source

returns Feature object

# File lib/simple_features/features.rb, line 13
def self.load_config(config_file = nil)
  if defined? 'Rails'
    features = YAML.load_file(Rails.root.join('config', 'simple_features.yml'))[environment]
  else
    features = YAML.load_file(config_file)
  end
  self.new(features)
end
new(features = {}) click to toggle source
# File lib/simple_features/features.rb, line 5
def initialize(features = {})

  @features = features
  make_features
  self
end

Private Instance Methods

environment() click to toggle source
# File lib/simple_features/features.rb, line 42
def environment
  if defined? 'Rails'
    Rails.env
  else
    :production
  end
end
is_boolean?(value) click to toggle source
# File lib/simple_features/features.rb, line 50
def is_boolean?(value)
  value = "#{value}".downcase
  ['true', 'false'].include? value
end
make_features() click to toggle source
# File lib/simple_features/features.rb, line 25
def make_features
  @features.each do |feature, feature_value|

    unless is_boolean? feature_value
      begin
        raise ArgumentError.new("Value must be true or false for key #{feature}")
      rescue ArgumentError => e
        puts e.message
      end
    else
      define_singleton_method("#{feature}?") do
        feature_value
      end
    end
  end
end