mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-12-18 03:25:31 -05:00
fix multisite to work with rails 4
This commit is contained in:
parent
1e21fc8c9a
commit
3bdd2eeeba
1 changed files with 14 additions and 3 deletions
|
@ -2,6 +2,10 @@ module RailsMultisite
|
||||||
class ConnectionManagement
|
class ConnectionManagement
|
||||||
CONFIG_FILE = 'config/multisite.yml'
|
CONFIG_FILE = 'config/multisite.yml'
|
||||||
|
|
||||||
|
def self.rails4?
|
||||||
|
!!(Rails.version =~ /^4/)
|
||||||
|
end
|
||||||
|
|
||||||
def self.establish_connection(opts)
|
def self.establish_connection(opts)
|
||||||
if opts[:db] == "default" && (!defined?(@@default_spec) || !@@default_spec)
|
if opts[:db] == "default" && (!defined?(@@default_spec) || !@@default_spec)
|
||||||
# don't do anything .. handled implicitly
|
# don't do anything .. handled implicitly
|
||||||
|
@ -18,7 +22,11 @@ module RailsMultisite
|
||||||
handler = @@default_connection_handler
|
handler = @@default_connection_handler
|
||||||
end
|
end
|
||||||
ActiveRecord::Base.connection_handler = handler
|
ActiveRecord::Base.connection_handler = handler
|
||||||
ActiveRecord::Base.connection_handler.establish_connection("ActiveRecord::Base", spec)
|
if rails4?
|
||||||
|
ActiveRecord::Base.connection_handler.establish_connection(ActiveRecord::Base, spec)
|
||||||
|
else
|
||||||
|
ActiveRecord::Base.connection_handler.establish_connection("ActiveRecord::Base", spec)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -68,6 +76,7 @@ module RailsMultisite
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.load_settings!
|
def self.load_settings!
|
||||||
|
spec_klass = rails4? ? ActiveRecord::ConnectionAdapters::ConnectionSpecification : ActiveRecord::Base::ConnectionSpecification
|
||||||
configs = YAML::load(File.open(self.config_filename))
|
configs = YAML::load(File.open(self.config_filename))
|
||||||
configs.each do |k,v|
|
configs.each do |k,v|
|
||||||
raise ArgumentError.new("Please do not name any db default!") if k == "default"
|
raise ArgumentError.new("Please do not name any db default!") if k == "default"
|
||||||
|
@ -75,7 +84,7 @@ module RailsMultisite
|
||||||
end
|
end
|
||||||
|
|
||||||
@@db_spec_cache = Hash[*configs.map do |k, data|
|
@@db_spec_cache = Hash[*configs.map do |k, data|
|
||||||
[k, ActiveRecord::Base::ConnectionSpecification::Resolver.new(k, configs).spec]
|
[k, spec_klass::Resolver.new(k, configs).spec]
|
||||||
end.flatten]
|
end.flatten]
|
||||||
|
|
||||||
@@host_spec_cache = {}
|
@@host_spec_cache = {}
|
||||||
|
@ -86,7 +95,7 @@ module RailsMultisite
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@default_spec = ActiveRecord::Base::ConnectionSpecification::Resolver.new(Rails.env, ActiveRecord::Base.configurations).spec
|
@@default_spec = spec_klass::Resolver.new(Rails.env, ActiveRecord::Base.configurations).spec
|
||||||
ActiveRecord::Base.configurations[Rails.env]["host_names"].each do |host|
|
ActiveRecord::Base.configurations[Rails.env]["host_names"].each do |host|
|
||||||
@@host_spec_cache[host] = @@default_spec
|
@@host_spec_cache[host] = @@default_spec
|
||||||
end
|
end
|
||||||
|
@ -98,7 +107,9 @@ module RailsMultisite
|
||||||
#
|
#
|
||||||
@@default_connection_handler = ActiveRecord::Base.connection_handler
|
@@default_connection_handler = ActiveRecord::Base.connection_handler
|
||||||
ActiveRecord::Base.send :include, NewConnectionHandler if ActiveRecord::VERSION::MAJOR == 3
|
ActiveRecord::Base.send :include, NewConnectionHandler if ActiveRecord::VERSION::MAJOR == 3
|
||||||
|
|
||||||
ActiveRecord::Base.connection_handler = @@default_connection_handler
|
ActiveRecord::Base.connection_handler = @@default_connection_handler
|
||||||
|
|
||||||
@@connection_handlers = {}
|
@@connection_handlers = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue