class Innkeeper::Adapters::Mysql2Adapter
Public Instance Methods
connection_specification_name(config)
click to toggle source
# File lib/innkeeper/adapters/mysql2_adapter.rb, line 27 def connection_specification_name(config) if Innkeeper.pool_per_config "_innkeeper_#{config.hash}".to_sym else host_hash = Digest::MD5.hexdigest(config[:host] || config[:url] || "127.0.0.1") "_innkeeper_#{host_hash}_#{config[:adapter]}".to_sym end end
create_tenant!(config)
click to toggle source
# File lib/innkeeper/adapters/mysql2_adapter.rb, line 17 def create_tenant!(config) Innkeeper.connection.create_database(config[:database], config) end
simple_switch(config)
click to toggle source
# File lib/innkeeper/adapters/mysql2_adapter.rb, line 21 def simple_switch(config) Innkeeper.connection.execute("use `#{config[:database]}`") rescue ActiveRecord::StatementInvalid => exception raise_connect_error!(config[:database], exception) end
switch_tenant(config)
click to toggle source
# File lib/innkeeper/adapters/mysql2_adapter.rb, line 7 def switch_tenant(config) difference = current_difference_from(config) if difference[:host] connection_switch!(config) else simple_switch(config) if difference[:database] end end
Private Instance Methods
database_exists?(database)
click to toggle source
# File lib/innkeeper/adapters/mysql2_adapter.rb, line 37 def database_exists?(database) result = Innkeeper.connection.exec_query(<<-SQL).try(:first) SELECT 1 AS `exists` FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = #{Innkeeper.connection.quote(database)} SQL result.present? && result['exists'] == 1 end