dbhijacker 0.4.0 → 0.4.2

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.0)
4
+ dbhijacker (0.4.2)
5
5
  rails (~> 2.3.14)
6
6
 
7
7
  GEM
data/Rakefile CHANGED
@@ -1,14 +1,6 @@
1
1
  require 'rake'
2
2
  require 'rake/rdoctask'
3
- require 'spec/rake/spectask'
4
3
 
5
- desc 'Default: run unit tests.'
6
- task :default => :spec
7
-
8
- desc 'Test the hijacker plugin.'
9
- Spec::Rake::SpecTask.new(:spec) do |t|
10
- t.spec_files = FileList['spec/**/*_spec.rb']
11
- end
12
4
 
13
5
  desc 'Generate documentation for the hijacker plugin.'
14
6
  Rake::RDocTask.new(:rdoc) do |rdoc|
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.0"
6
+ s.version = "0.4.2"
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"]
@@ -12,6 +12,10 @@ class Hijacker::Database < ActiveRecord::Base
12
12
 
13
13
  alias_attribute :name, :database
14
14
 
15
+ def sister?
16
+ master_id.present?
17
+ end
18
+
15
19
  def self.find_by_name(name)
16
20
  find_by_database(name)
17
21
  end
@@ -73,7 +77,11 @@ class Hijacker::Database < ActiveRecord::Base
73
77
  original_database = Hijacker.current_client
74
78
  begin
75
79
  sites.each do |db|
76
- Hijacker.connect_to_master(db)
80
+ begin
81
+ Hijacker.connect_to_master(db)
82
+ rescue Hijacker::InvalidDatabase
83
+ next
84
+ end
77
85
  yield db
78
86
  end
79
87
  ensure
data/lib/hijacker.rb CHANGED
@@ -36,7 +36,10 @@ module Hijacker
36
36
  target_name = target_name.downcase
37
37
  sister_name = sister_name.downcase unless sister_name.nil?
38
38
 
39
- return if already_connected?(target_name, sister_name) || test?
39
+ if already_connected?(target_name, sister_name)
40
+ return "Already connected to #{target_name}"
41
+ end
42
+ puts "CONNECTING TO (#{target_name}, #{sister_name})"
40
43
 
41
44
  verify = options.fetch(:verify, Hijacker.do_hijacking?)
42
45
 
@@ -46,8 +49,13 @@ module Hijacker
46
49
 
47
50
  check_connection
48
51
 
49
- self.master = database.name
50
- self.sister = sister_name
52
+ if database.sister?
53
+ self.master = database.master.name
54
+ self.sister = database.name
55
+ else
56
+ self.master = database.name
57
+ self.sister = nil
58
+ end
51
59
 
52
60
  # don't cache sister site
53
61
  cache_database_route(target_name, database) unless sister_name
@@ -165,10 +173,6 @@ module Hijacker
165
173
  ::ActiveRecord::Base.connection
166
174
  end
167
175
 
168
- def self.test?
169
- ['test', 'cucumber'].include?(RAILS_ENV)
170
- end
171
-
172
176
  private
173
177
 
174
178
  def self.already_connected?(new_master, new_sister)
@@ -71,6 +71,11 @@ module Hijacker
71
71
 
72
72
  Hijacker::Database.current.should == original_db
73
73
  end
74
+
75
+ it "eats invalid database errors" do
76
+ Hijacker.stub!(:connect).and_raise(Hijacker::InvalidDatabase)
77
+ expect { Database.connect_each {|db| } }.not_to raise_error
78
+ end
74
79
  end
75
80
  end
76
81
  end
@@ -42,7 +42,6 @@ describe Hijacker do
42
42
  subject.master = nil
43
43
  subject.sister = nil
44
44
  subject.valid_routes = {}
45
- subject.stub(:test?).and_return(false)
46
45
  ActiveRecord::Base.stub(:establish_connection)
47
46
  subject.stub(:root_connection).and_return(stub(:config => {}))
48
47
  subject.stub(:connect_sister_site_models)
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: 15
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 2
10
+ version: 0.4.2
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.15
198
+ rubygems_version: 1.8.21
199
199
  signing_key:
200
200
  specification_version: 3
201
201
  summary: One application, multiple client databases