module Apartment::Tenant
The main entry point to Apartment
functions
Attributes
config[W]
Public Class Methods
jdbc_mysql_adapter(config)
click to toggle source
# File lib/apartment/adapters/jdbc_mysql_adapter.rb, line 6 def self.jdbc_mysql_adapter(config) Adapters::JDBCMysqlAdapter.new config end
jdbc_postgresql_adapter(config)
click to toggle source
# File lib/apartment/adapters/jdbc_postgresql_adapter.rb, line 6 def self.jdbc_postgresql_adapter(config) Apartment.use_schemas ? Adapters::JDBCPostgresqlSchemaAdapter.new(config) : Adapters::JDBCPostgresqlAdapter.new(config) end
mysql2_adapter(config)
click to toggle source
# File lib/apartment/adapters/mysql2_adapter.rb, line 6 def self.mysql2_adapter(config) Apartment.use_schemas ? Adapters::Mysql2SchemaAdapter.new(config) : Adapters::Mysql2Adapter.new(config) end
postgis_adapter(config)
click to toggle source
# File lib/apartment/adapters/postgis_adapter.rb, line 8 def self.postgis_adapter(config) postgresql_adapter(config) end
postgresql_adapter(config)
click to toggle source
# File lib/apartment/adapters/postgresql_adapter.rb, line 6 def self.postgresql_adapter(config) adapter = Adapters::PostgresqlAdapter adapter = Adapters::PostgresqlSchemaAdapter if Apartment.use_schemas adapter = Adapters::PostgresqlSchemaFromSqlAdapter if Apartment.use_sql && Apartment.use_schemas adapter.new(config) end
sqlite3_adapter(config)
click to toggle source
# File lib/apartment/adapters/sqlite3_adapter.rb, line 5 def self.sqlite3_adapter(config) Adapters::Sqlite3Adapter.new(config) end
Public Instance Methods
adapter()
click to toggle source
Fetch the proper multi-tenant adapter based on Rails config
@return {subclass of Apartment::AbstractAdapter}
# File lib/apartment/tenant.rb, line 25 def adapter Thread.current[:apartment_adapter] ||= begin adapter_method = "#{config[:adapter]}_adapter" if defined?(JRUBY_VERSION) if config[:adapter] =~ /mysql/ adapter_method = 'jdbc_mysql_adapter' elsif config[:adapter] =~ /postgresql/ adapter_method = 'jdbc_postgresql_adapter' end end begin require "apartment/adapters/#{adapter_method}" rescue LoadError raise "The adapter `#{adapter_method}` is not yet supported" end unless respond_to?(adapter_method) raise AdapterNotFound, "database configuration specifies nonexistent #{config[:adapter]} adapter" end send(adapter_method, config) end end
init()
click to toggle source
Initialize Apartment
config options such as excluded_models
# File lib/apartment/tenant.rb, line 17 def init adapter.process_excluded_models end
reload!(config = nil)
click to toggle source
Reset config and adapter so they are regenerated
# File lib/apartment/tenant.rb, line 53 def reload!(config = nil) Thread.current[:apartment_adapter] = nil @config = config end
Private Instance Methods
config()
click to toggle source
Fetch the rails database configuration
# File lib/apartment/tenant.rb, line 62 def config @config ||= Apartment.connection_config end