Skip to content

Instantly share code, notes, and snippets.

@lysenkooo
Created December 14, 2016 09:53
Show Gist options
  • Save lysenkooo/c273adee8010bb4b2bbfdc487e2bbe3e to your computer and use it in GitHub Desktop.
Save lysenkooo/c273adee8010bb4b2bbfdc487e2bbe3e to your computer and use it in GitHub Desktop.
App Class
class Environment
def self.values
%w(debug development test staging production)
end
values.each do |env|
class_eval %Q{
def #{env}?
@env == :#{env}
end
}
end
def initialize
env = ENV.fetch('ENV', 'development').downcase.to_sym
fail 'Unknown env setting' unless self.class.values.include?(env.to_s)
@env = env.to_sym
end
def to_s
@env.to_s
end
def to_sym
@env.to_sym
end
end
class App
@@env = Environment.new
def self.version
'1.13.0'
end
def self.env
@@env
end
end
@davydovanton
Copy link

davydovanton commented Dec 14, 2016

class Environment
  extend Forwardable

  VALID_ENVS = %i(debug development test staging production).freeze

  def_delegators :@env, :to_s, :to_sym

  def initialize
    @env = ENV.fetch('ENV', 'development').downcase.to_sym
    fail 'Unknown env setting' unless VALID_ENVS.include?(@env)
  end

  VALID_ENVS.each do |env|
    define_method("#{env}?") { @env == env }
  end
end

class App
  VERSION = '1.13.0'.freeze

  def self.version
    VERSION
  end

  def self.env
    @env ||= Environment.new
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment