Sha256: 77ac125ecf897890263d0b5f0a2f0eb260fac9cf07c12d858b297fe97c58c49c

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require "singlettings/base"

module Singlettings
  def self.hook_rails!
    if defined?(::Rails)
      config_path = "#{::Rails.root.to_s}/config/"
      Singlettings.load_yaml_files! config_path
    end
  end

  class Rails < ::Rails::Engine
    initializer 'singlettings' do
      Singlettings.hook_rails!
    end
  end if defined?(::Rails)

  private
  def self.load_yaml_files!(load_path)
    # Load singletting.yml
    files = []

    singletting = "#{load_path}singletting.yml"
    files << singletting if File.exists?(singletting)

    # Add MyColorWay Flavoured yetting.yml
    yetting = "#{load_path}yetting.yml"
    files << yetting if File.exists? yetting

    # Add namespaced files
    files += Dir.glob("#{load_path}singlettings/**/*.yml")

    files.each do |file|
      Singlettings.eval_yaml file
    end
  end

  # This method needs ActiveSupport
  def self.eval_yaml(file)
    base_name = File.basename(file).gsub(".yml", "").camelize
    if base_name == "Singletting" or base_name == "Yetting"
      klass_name = base_name
    else
      klass_name = "Singletting#{base_name}"
    end
    Object.const_set(klass_name, Singlettings.eval_yaml_class(file))
  end

  # Return specified anonymous class
  def self.eval_yaml_class(file)
    klass = Class.new(Singlettings::Base) do
      source file
      ns ::Rails.env
    end
    return klass
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
singlettings-0.0.3 lib/singlettings/rails.rb
singlettings-0.0.2 lib/singlettings/rails.rb