Sha256: e198d98c118709f39da386e33432fe10063e7a7cfc4f490659b21a57730bd862

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'singleton'

module SugarCRM; class Environment
  include Singleton
  
  attr_reader :config
  
  def initialize
    @config = {}
    
    # see README for reasoning behind the priorization
    ['/etc/sugarcrm.yaml', File.expand_path('~/.sugarcrm.yaml'), File.join(File.dirname(__FILE__), 'config', 'sugarcrm.yaml')].each{|path|
      load_config path if File.exists? path
    }
    extensions_folder = File.join(File.dirname(__FILE__), 'extensions')
    SugarCRM::Base.establish_connection(@config[:base_url], @config[:username], @config[:password], {:load_environment => false}) if SugarCRM.connection.nil? && connection_info_loaded?
  end
  
  def connection_info_loaded?
    @config[:base_url] && @config[:username] && @config[:password]
  end
  
  def load_config(path)
    validate_path path
    config = YAML.load_file(path)
    if config && config["config"]
      config["config"].each{|k,v|
        @config[k.to_sym] = v
      }
    end
  end
  
  # load all the monkey patch extension files in the provided folder
  def extensions_folder=(folder, dirstring=nil)
    validate_path folder
    path = File.expand_path(folder, dirstring)
    Dir[File.join(path, '**', '*.rb').to_s].each { |f| load(f) }
  end
  
  def self.method_missing(method_id, *args, &block)
    self.instance.send(method_id, *args, &block)
  end
  
  private
  def validate_path(path)
    raise "Invalid path: #{path}" unless File.exists? path
  end
end; end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sugarcrm-0.9.9 lib/sugarcrm/environment.rb