module Apartment::Tenant
JDBC helper to decide wether to use JDBC Postgresql Adapter or JDBC Postgresql Adapter with Schemas
Helper module to decide wether to use mysql2 adapter or mysql2 adapter with schemas
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 7 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 8 def self.jdbc_postgresql_adapter(config) if Apartment.use_schemas Adapters::JDBCPostgresqlSchemaAdapter.new(config) else Adapters::JDBCPostgresqlAdapter.new(config) end end
mysql2_adapter(config)
click to toggle source
# File lib/apartment/adapters/mysql2_adapter.rb, line 8 def self.mysql2_adapter(config) if Apartment.use_schemas Adapters::Mysql2SchemaAdapter.new(config) else Adapters::Mysql2Adapter.new(config) end end
postgis_adapter(config)
click to toggle source
# File lib/apartment/adapters/postgis_adapter.rb, line 9 def self.postgis_adapter(config) postgresql_adapter(config) end
postgresql_adapter(config)
click to toggle source
# File lib/apartment/adapters/postgresql_adapter.rb, line 7 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 7 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 21 def adapter Thread.current[:apartment_adapter] ||= begin adapter_method = "#{config[:adapter]}_adapter" if defined?(JRUBY_VERSION) case config[:adapter] when /mysql/ adapter_method = 'jdbc_mysql_adapter' when /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
reload!(config = nil)
click to toggle source
Reset config and adapter so they are regenerated
# File lib/apartment/tenant.rb, line 50 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 59 def config @config ||= Apartment.connection_config end