Module: Apartment
- Extended by:
- Forwardable
- Defined in:
- lib/apartment/tasks/enhancements.rb,
lib/apartment.rb,
lib/apartment/tenant.rb,
lib/apartment/railtie.rb,
lib/apartment/version.rb,
lib/apartment/migrator.rb,
lib/apartment/reloader.rb,
lib/apartment/deprecation.rb,
lib/apartment/elevators/domain.rb,
lib/apartment/elevators/generic.rb,
lib/apartment/elevators/host_hash.rb,
lib/apartment/elevators/subdomain.rb,
lib/apartment/adapters/mysql2_adapter.rb,
lib/apartment/adapters/postgis_adapter.rb,
lib/apartment/adapters/sqlite3_adapter.rb,
lib/apartment/adapters/abstract_adapter.rb,
lib/apartment/elevators/first_subdomain.rb,
lib/apartment/adapters/jdbc_mysql_adapter.rb,
lib/apartment/adapters/postgresql_adapter.rb,
lib/apartment/adapters/abstract_jdbc_adapter.rb,
lib/apartment/adapters/jdbc_postgresql_adapter.rb,
lib/generators/apartment/install/install_generator.rb
Overview
Require this file to append Apartment rake tasks to ActiveRecord db rake tasks Enabled by default in the initializer
Defined Under Namespace
Modules: Adapters, Deprecation, Elevators, Migrator, Tenant
Classes: InstallGenerator, Railtie, RakeTaskEnhancer, Reloader
Constant Summary
collapse
- ACCESSOR_METHODS =
[:use_schemas, :use_sql, :seed_after_create, :prepend_environment, :append_environment, :with_multi_server_setup ]
- WRITER_METHODS =
[:tenant_names, :database_schema_file, :excluded_models, :default_schema, :persistent_schemas, :connection_class, :tld_length, :db_migrate_tenants, :seed_data_file]
- ApartmentError =
Class.new(StandardError)
- AdapterNotFound =
Raised when apartment cannot find the adapter specified in config/database.yml
Class.new(ApartmentError)
- TenantNotFound =
Tenant specified is unknown
Class.new(ApartmentError)
- TenantExists =
The Tenant attempting to be created already exists
Class.new(ApartmentError)
- VERSION =
"1.2.0"
Class Method Summary
collapse
Class Method Details
configure apartment with available options
23
24
25
|
# File 'lib/apartment.rb', line 23
def configure
yield self if block_given?
end
|
.connection_class ⇒ Object
62
63
64
|
# File 'lib/apartment.rb', line 62
def connection_class
@connection_class || ActiveRecord::Base
end
|
.const_missing(const_name) ⇒ Object
68
69
70
71
72
73
74
75
|
# File 'lib/apartment/tenant.rb', line 68
def self.const_missing(const_name)
if const_name == :Database
Apartment::Deprecation.warn "`Apartment::Database` has been deprecated. Use `Apartment::Tenant` instead."
Tenant
else
super
end
end
|
.database_names ⇒ Object
87
88
89
90
|
# File 'lib/apartment.rb', line 87
def database_names
Apartment::Deprecation.warn "[Deprecation Warning] `database_names` is now deprecated, please use `tenant_names`"
tenant_names
end
|
.database_names=(names) ⇒ Object
92
93
94
95
|
# File 'lib/apartment.rb', line 92
def database_names=(names)
Apartment::Deprecation.warn "[Deprecation Warning] `database_names=` is now deprecated, please use `tenant_names=`"
self.tenant_names=(names)
end
|
.database_schema_file ⇒ Object
66
67
68
69
70
|
# File 'lib/apartment.rb', line 66
def database_schema_file
return @database_schema_file if defined?(@database_schema_file)
@database_schema_file = Rails.root.join('db', 'schema.rb')
end
|
.db_config_for(tenant) ⇒ Object
35
36
37
|
# File 'lib/apartment.rb', line 35
def db_config_for(tenant)
(tenants_with_config[tenant] || connection_config).with_indifferent_access
end
|
.db_migrate_tenants ⇒ Object
Whether or not db:migrate should also migrate tenants defaults to true
41
42
43
44
45
|
# File 'lib/apartment.rb', line 41
def db_migrate_tenants
return @db_migrate_tenants if defined?(@db_migrate_tenants)
@db_migrate_tenants = true
end
|
.default_schema ⇒ Object
Also known as:
default_tenant
52
53
54
|
# File 'lib/apartment.rb', line 52
def default_schema
@default_schema || "public" end
|
.excluded_models ⇒ Object
48
49
50
|
# File 'lib/apartment.rb', line 48
def excluded_models
@excluded_models || []
end
|
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/apartment.rb', line 107
def
return {} unless @tenant_names
values = @tenant_names.respond_to?(:call) ? @tenant_names.call : @tenant_names
unless values.is_a? Hash
values = values.each_with_object({}) do |tenant, hash|
hash[tenant] = connection_config
end
end
values.with_indifferent_access
rescue ActiveRecord::StatementInvalid
{}
end
|
.persistent_schemas ⇒ Object
58
59
60
|
# File 'lib/apartment.rb', line 58
def persistent_schemas
@persistent_schemas || []
end
|
.reset ⇒ Object
Reset all the config for Apartment
83
84
85
|
# File 'lib/apartment.rb', line 83
def reset
(ACCESSOR_METHODS + WRITER_METHODS).each{|method| remove_instance_variable(:"@#{method}") if instance_variable_defined?(:"@#{method}") }
end
|
.seed_data_file ⇒ Object
72
73
74
75
76
|
# File 'lib/apartment.rb', line 72
def seed_data_file
return @seed_data_file if defined?(@seed_data_file)
@seed_data_file = "#{Rails.root}/db/seeds.rb"
end
|
.tenant_names ⇒ Object
27
28
29
|
# File 'lib/apartment.rb', line 27
def tenant_names
.keys.map(&:to_s)
end
|
.tenants_with_config ⇒ Object
31
32
33
|
# File 'lib/apartment.rb', line 31
def tenants_with_config
end
|
.tld_length ⇒ Object
78
79
80
|
# File 'lib/apartment.rb', line 78
def tld_length
@tld_length || 1
end
|
.use_postgres_schemas ⇒ Object
97
98
99
100
|
# File 'lib/apartment.rb', line 97
def use_postgres_schemas
Apartment::Deprecation.warn "[Deprecation Warning] `use_postgresql_schemas` is now deprecated, please use `use_schemas`"
use_schemas
end
|
.use_postgres_schemas=(to_use_or_not_to_use) ⇒ Object
102
103
104
105
|
# File 'lib/apartment.rb', line 102
def use_postgres_schemas=(to_use_or_not_to_use)
Apartment::Deprecation.warn "[Deprecation Warning] `use_postgresql_schemas=` is now deprecated, please use `use_schemas=`"
self.use_schemas = to_use_or_not_to_use
end
|