Module: Excursion::Pool

Defined in:
lib/excursion/pool.rb,
lib/excursion/pool/application.rb

Defined Under Namespace

Classes: Application

Constant Summary collapse

@@applications =
{}

Class Method Summary collapse

Class Method Details

.application(name) ⇒ Object



9
10
11
12
13
14
# File 'lib/excursion/pool.rb', line 9

def self.application(name)
  return @@applications[name] if @@applications.has_key?(name)
  
  app_yaml = datasource.get(name)
  @@applications[name] = Application.from_cache(app_yaml) unless app_yaml.nil?
end

.datasourceObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/excursion/pool.rb', line 30

def self.datasource
  raise NoDatasourceError, "You must configure excursion with a datasource." if Excursion.configuration.datasource.nil?
  require "excursion/datasources/#{Excursion.configuration.datasource.to_s}"
  @@datasource ||= "Excursion::Datasources::#{Excursion.configuration.datasource.to_s.camelize}".constantize.new
#rescue NoDatasourceError => e
  #raise e
rescue StandardError => e
  raise e
  #raise InvalidDatasourceError, "Could not initialize your datasource. Make sure you have properly configured it"
end

.register_application(app) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/excursion/pool.rb', line 16

def self.register_application(app)
  name = app.class.name.underscore.split("/").first
  config = {name: name, default_url_options: Excursion.configuration.default_url_options}
  
  @@applications[name] = Application.new(config, app.routes.named_routes)
  datasource.set(name, @@applications[name].to_cache)
end

.remove_application(app) ⇒ Object



24
25
26
27
28
# File 'lib/excursion/pool.rb', line 24

def self.remove_application(app)
  name = app.class.name.underscore.split("/").first
  datasource.delete(name)
  @@applications.delete(name)
end