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_applications ⇒ Object
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
|
.datastore ⇒ Object
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
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
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
|