dbhijacker 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/hijacker.gemspec +1 -1
- data/lib/hijacker.rb +36 -28
- metadata +4 -4
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.
|
6
|
+
s.version = "0.4.7"
|
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
@@ -31,42 +31,50 @@ module Hijacker
|
|
31
31
|
# Note that you can manually call this from script/console (or wherever)
|
32
32
|
# to connect to the database you want, ex Hijacker.connect("database")
|
33
33
|
def self.connect(target_name, sister_name = nil, options = {})
|
34
|
-
|
34
|
+
original_database = Hijacker::Database.current
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
begin
|
37
|
+
raise InvalidDatabase, 'master cannot be nil' if target_name.nil?
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
end
|
39
|
+
target_name = target_name.downcase
|
40
|
+
sister_name = sister_name.downcase unless sister_name.nil?
|
42
41
|
|
43
|
-
|
42
|
+
if already_connected?(target_name, sister_name)
|
43
|
+
return "Already connected to #{target_name}"
|
44
|
+
end
|
44
45
|
|
45
|
-
|
46
|
+
verify = options.fetch(:verify, Hijacker.do_hijacking?)
|
46
47
|
|
47
|
-
|
48
|
+
database = determine_database(target_name, sister_name, verify)
|
48
49
|
|
49
|
-
|
50
|
+
establish_connection_to_database(database)
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
check_connection
|
53
|
+
|
54
|
+
if database.sister?
|
55
|
+
self.master = database.master.name
|
56
|
+
self.sister = database.name
|
57
|
+
else
|
58
|
+
self.master = database.name
|
59
|
+
self.sister = nil
|
60
|
+
end
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
62
|
+
# don't cache sister site
|
63
|
+
cache_database_route(target_name, database) unless sister_name
|
64
|
+
|
65
|
+
connect_sister_site_models(target_name)
|
66
|
+
|
67
|
+
reenable_query_caching
|
68
|
+
|
69
|
+
self.config[:after_hijack].call if self.config[:after_hijack]
|
70
|
+
rescue
|
71
|
+
if original_database.present?
|
72
|
+
establish_connection_to_database(original_database)
|
73
|
+
else
|
74
|
+
self.establish_root_connection
|
75
|
+
end
|
76
|
+
raise
|
77
|
+
end
|
70
78
|
end
|
71
79
|
|
72
80
|
# very small chance this will raise, but if it does, we will still handle it the
|
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:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 7
|
10
|
+
version: 0.4.7
|
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.
|
198
|
+
rubygems_version: 1.8.24
|
199
199
|
signing_key:
|
200
200
|
specification_version: 3
|
201
201
|
summary: One application, multiple client databases
|