dbhijacker 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dbhijacker (0.4.3)
4
+ dbhijacker (0.4.4)
5
5
  rails (~> 2.3.14)
6
6
 
7
7
  GEM
data/hijacker.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{dbhijacker}
5
5
  s.homepage = "https://github.com/crystalcommerce/hijacker"
6
- s.version = "0.4.3"
6
+ s.version = "0.4.4"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.authors = ["Michael Xavier", "Donald Plummer", "Woody Peterson"]
data/lib/hijacker.rb CHANGED
@@ -77,17 +77,18 @@ module Hijacker
77
77
  # we're not in a sister-site situation
78
78
  def self.connect_sister_site_models(db)
79
79
  return if db.nil?
80
-
80
+ database = Hijacker::Database.find_by_database(db)
81
+
81
82
  sister_db_connection_pool = self.processing_sister_site? ? nil : ActiveRecord::Base.connection_pool
82
83
  self.config[:sister_site_models].each do |model_name|
83
84
  ar_model = model_name.constantize
84
-
85
+
85
86
  if !sister_db_connection_pool
86
- ar_model.establish_connection(self.root_connection.config.merge(:database => db))
87
+ ar_model.establish_connection(connection_config(database))
87
88
  begin
88
89
  ar_model.connection
89
90
  rescue
90
- ar_model.establish_connection(self.root_connection.config)
91
+ ar_model.establish_connection(root_config)
91
92
  raise Hijacker::InvalidDatabase, db
92
93
  end
93
94
  sister_db_connection_pool = ar_model.connection_pool
@@ -131,9 +132,9 @@ module Hijacker
131
132
 
132
133
  return $hijacker_root_connection
133
134
  end
134
-
135
+
135
136
  def self.root_config
136
- ActiveRecord::Base.configurations['root']
137
+ ActiveRecord::Base.configurations['root'].with_indifferent_access
137
138
  end
138
139
 
139
140
  # this should establish a connection to a database containing the bare minimum
@@ -198,9 +199,7 @@ private
198
199
  end
199
200
 
200
201
  def self.establish_connection_to_database(database)
201
- hijacked_config = self.root_connection.config.dup
202
- ::ActiveRecord::Base.establish_connection(hijacked_config.merge(:database => database.name,
203
- :host => database.host.hostname))
202
+ ::ActiveRecord::Base.establish_connection(connection_config(database))
204
203
  end
205
204
 
206
205
  # This is a hack to get query caching back on. For some reason when we
@@ -216,6 +215,11 @@ private
216
215
  ::ActiveRecord::Base.connection.cache do;end
217
216
  end
218
217
  end
218
+
219
+ def self.connection_config(database)
220
+ root_config.merge('database' => database.name,
221
+ 'host' => database.host.hostname)
222
+ end
219
223
  end
220
224
 
221
225
  require 'hijacker/database'
@@ -57,7 +57,7 @@ describe Hijacker do
57
57
  it "establishes a connection merging in the db name and the hostname" do
58
58
  Hijacker::Database.create!(:database => 'elsewhere', :host => host)
59
59
  ActiveRecord::Base.should_receive(:establish_connection).
60
- with({:database => 'elsewhere', :host => "localhost"})
60
+ with(hash_including("database" => 'elsewhere', "host" => "localhost"))
61
61
  subject.connect('elsewhere')
62
62
  end
63
63
 
@@ -81,7 +81,8 @@ describe Hijacker do
81
81
 
82
82
  it "connects with the alias to the master and the host" do
83
83
  ActiveRecord::Base.should_receive(:establish_connection).
84
- with({:database => 'master_db', :host => "localhost"})
84
+ with(hash_including('database' => 'master_db',
85
+ 'host' => "localhost"))
85
86
  subject.connect('alias_db')
86
87
  end
87
88
 
data/spec/spec_helper.rb CHANGED
@@ -9,6 +9,10 @@ RAILS_ENV="test"
9
9
  ENV['RAILS_ENV'] = 'test'
10
10
  $:.unshift '../lib'
11
11
  ActiveRecord::Base.configurations = {
12
+ "root" => {
13
+ :adapter => 'sqlite3',
14
+ :database => File.dirname(__FILE__) + "/test_database.sqlite3"
15
+ },
12
16
  "test" => {
13
17
  :adapter => 'sqlite3',
14
18
  :database => File.dirname(__FILE__) + "/test_database.sqlite3"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbhijacker
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Xavier
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
195
  requirements: []
196
196
 
197
197
  rubyforge_project:
198
- rubygems_version: 1.8.21
198
+ rubygems_version: 1.8.15
199
199
  signing_key:
200
200
  specification_version: 3
201
201
  summary: One application, multiple client databases