Module: Excursion::Pool

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

Defined Under Namespace

Classes: Application, DummyApplication

Constant Summary collapse

@@applications =
{}

Class Method Summary collapse

Class Method Details

.all_applicationsObject



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

def self.all_applications
  datastore.all_apps
end

.application(name) ⇒ Object



13
14
15
16
17
# File 'lib/excursion/pool.rb', line 13

def self.application(name)
  return @@applications[name] if @@applications.has_key?(name) && !@@applications[name].nil?
  
  @@applications[name] = datastore.app(name)
end

.datastoreObject

Raises:



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/excursion/pool.rb', line 37

def self.datastore
  raise NoDatastoreError, "You must configure excursion with a datastore." if Excursion.configuration.datastore.nil?
  require "excursion/datastores/#{Excursion.configuration.datastore.to_s}"

  case Excursion.configuration.datastore.to_sym
  when :file
    raise DatastoreConfigurationError, "You must configure the :file datastore with a datastore_file path" if Excursion.configuration.datastore_file.nil?
    @@datastore ||= Excursion::Datastores::File.new(Excursion.configuration.datastore_file)
  when :memcache
    raise MemcacheConfigurationError, "You must configure the :memcache datastore with a memcache_server" if Excursion.configuration.memcache_server.nil?
    @@datastore ||= Excursion::Datastores::Memcache.new(Excursion.configuration.memcache_server)
  when :active_record
    raise TableDoesNotExist, "To use the :active_record datastore you must first run `rails generate excursion:active_record` followed by `rake db:migrate` to create the storage table" unless Excursion::RoutePool.table_exists?
    @@datastore ||= Excursion::Datastores::ActiveRecord.new
  when :active_record_with_memcache
    raise MemcacheConfigurationError, "You must configure the :active_record_with_memcache datastore with a memcache_server" if Excursion.configuration.memcache_server.nil?
    raise TableDoesNotExist, "To use the :active_record_with_memcache datastore you must first run `rails generate excursion:active_record` followed by `rake db:migrate` to create the storage table" unless Excursion::RoutePool.table_exists?
    @@datastore ||= Excursion::Datastores::ActiveRecord.new(Excursion.configuration.memcache_server)
  when :test
    @@datastore ||= Excursion::Datastores::Test.new
  end
end

.register_application(app) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
# File 'lib/excursion/pool.rb', line 19

def self.register_application(app)
  raise ArgumentError, "app must be an instance of Rails::Application" unless app.is_a?(Rails::Application)
  
  name = app.class.name.underscore.split("/").first
  config = {default_url_options: Excursion.configuration.default_url_options}
  
  @@applications[name] = Application.new(name, config, app.routes.named_routes)
  datastore.set(name, @@applications[name].to_cache)
end

.remove_application(app) ⇒ Object

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
# File 'lib/excursion/pool.rb', line 29

def self.remove_application(app)
  raise ArgumentError, "app must be an instance of Rails::Application" unless app.is_a?(Rails::Application)
  
  name = app.class.name.underscore.split("/").first
  datastore.delete(name)
  @@applications.delete(name)
end