module Stealth

Constants

VERSION

Public Class Methods

boot() click to toggle source
# File lib/stealth/base.rb, line 32
def self.boot
  load_environment
end
config() click to toggle source
# File lib/stealth/base.rb, line 36
def self.config
  Thread.current[:configuration] ||= load_services_config
end
configuration=(config) click to toggle source
# File lib/stealth/base.rb, line 40
def self.configuration=(config)
  Thread.current[:configuration] = config
end
env() click to toggle source
# File lib/stealth/base.rb, line 24
def self.env
  @env ||= ActiveSupport::StringInquirer.new(ENV['STEALTH_ENV'] || 'development')
end
load_environment() click to toggle source
# File lib/stealth/base.rb, line 79
def self.load_environment
  require File.join(Stealth.root, 'config', 'boot')
  require_directory("config/initializers")

  # Require explicitly to ensure it loads first
  require_directory File.join(Stealth.root, 'bot', 'controllers', 'concerns')
  require_directory File.join(Stealth.root, 'bot', 'models', 'concerns')
  require File.join(Stealth.root, 'bot', 'controllers', 'bot_controller')
  require File.join(Stealth.root, 'bot', 'models', 'bot_record')

  require File.join(Stealth.root, 'config', 'flow_map')
  require_directory("bot")

  if defined?(ActiveRecord)
    if ENV['DATABASE_URL'].present?
      ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
    else
      ActiveRecord::Base.establish_connection(YAML::load_file("config/database.yml")[Stealth.env])
    end
  end
end
load_services_config(services_yaml=nil) click to toggle source

Loads the services.yml configuration unless one has already been loaded

# File lib/stealth/base.rb, line 50
def self.load_services_config(services_yaml=nil)
  @semaphore ||= Mutex.new
  services_yaml ||= Stealth.load_services_config(
    File.read(File.join(Stealth.root, 'config', 'services.yml'))
  )

  Thread.current[:configuration] ||= begin
    @semaphore.synchronize do
      services_config = YAML.load(ERB.new(services_yaml).result)

      unless services_config.has_key?(env)
        raise Stealth::Errors::ConfigurationError, "Could not find services.yml configuration for #{env} environment"
      end

      config = Stealth::Configuration.new(services_config[env])
      set_config_defaults(config)

      config
    end
  end
end
load_services_config!(services_yaml=nil) click to toggle source

Same as `load_services_config` but forces the loading even if one has already been loaded

# File lib/stealth/base.rb, line 74
def self.load_services_config!(services_yaml=nil)
  Thread.current[:configuration] = nil
  load_services_config(services_yaml)
end
root() click to toggle source
# File lib/stealth/base.rb, line 28
def self.root
  @root ||= File.expand_path(Pathname.new(Dir.pwd))
end
set_config_defaults(config) click to toggle source
# File lib/stealth/base.rb, line 44
def self.set_config_defaults(config)
  config.dynamic_delay_muliplier = 1.0
  config.session_ttl = 0
end

Private Class Methods

for_each_file_in(directory, &blk) click to toggle source
# File lib/stealth/base.rb, line 107
def self.for_each_file_in(directory, &blk)
  directory = directory.to_s.gsub(%r{(\/|\\)}, File::SEPARATOR)
  directory = Pathname.new(Dir.pwd).join(directory).to_s
  directory = File.join(directory, '**', '*.rb') unless directory =~ /(\*\*)/

  Dir.glob(directory).sort.each(&blk)
end
require_directory(directory) click to toggle source
# File lib/stealth/base.rb, line 103
def self.require_directory(directory)
  for_each_file_in(directory) { |file| require_relative(file) }
end