master_slave 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/master_slave/{config.rb → configuration.rb} +2 -7
- data/lib/master_slave/connection_handler.rb +7 -11
- data/lib/master_slave/{base.rb → core.rb} +2 -2
- data/lib/master_slave/railtie.rb +4 -4
- data/lib/master_slave/version.rb +1 -1
- data/lib/master_slave.rb +27 -2
- metadata +16 -34
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ac72a0a0724da38a016bbdd1583db8401e426431
|
4
|
+
data.tar.gz: e784023a02f7adc988aaadedda4e32dd1b285e12
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 184399a622403048090201c11e469d337bc7da6ef4c7ea6d7f455c8b9ce71fde631d8b0d50aa3c97a17870d2e69572c7b8f76c1e309ca37d60abae3c561cda4f
|
7
|
+
data.tar.gz: 0666f7fbb6a7e85d1b8856642a57731ca06b2583da7fc1bff55f5f74d15406f151df1247acd537889430b299b2c1bde2aff0135562c49f88a3c5ebbf95cc1af9
|
@@ -1,9 +1,4 @@
|
|
1
1
|
module MasterSlave
|
2
|
-
|
3
|
-
def self.config
|
4
|
-
@config ||= MasterSlave::Configuration.new
|
5
|
-
end
|
6
|
-
|
7
2
|
class Configuration
|
8
3
|
cattr_accessor :config_file
|
9
4
|
|
@@ -12,7 +7,7 @@ module MasterSlave
|
|
12
7
|
end
|
13
8
|
|
14
9
|
def slave_names
|
15
|
-
raise "#{Rails.env}'s slave config not exist" if @content.blank?
|
10
|
+
raise "#{Rails.env}'s slave config is not exist" if @content.blank?
|
16
11
|
@shard_names ||= @content.keys.sort
|
17
12
|
end
|
18
13
|
|
@@ -28,7 +23,7 @@ module MasterSlave
|
|
28
23
|
|
29
24
|
def load_config
|
30
25
|
if File.exist?(self.class.config_file)
|
31
|
-
hash_config = YAML.load(ERB.new(File.
|
26
|
+
hash_config = YAML.load(ERB.new(File.read(self.class.config_file)).result)
|
32
27
|
HashWithIndifferentAccess.new(hash_config)[Rails.env]
|
33
28
|
else
|
34
29
|
{}
|
@@ -10,25 +10,21 @@ module MasterSlave
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class << self
|
13
|
-
|
14
|
-
def setup
|
15
|
-
setup_connection
|
16
|
-
end
|
17
|
-
|
18
13
|
def connection_pool_name(slave_name)
|
19
14
|
"master_slave_#{slave_name.to_s.strip}"
|
20
15
|
end
|
21
16
|
|
22
|
-
protected
|
23
|
-
|
24
17
|
def setup_connection
|
25
18
|
ActiveRecord::Base.slave_connection_names ||= []
|
26
19
|
MasterSlave.config.slave_names.each do |slave_name|
|
27
|
-
|
28
|
-
|
20
|
+
slave_name = slave_name.to_s.strip
|
21
|
+
if !ActiveRecord::Base.slave_connection_names.include? slave_name
|
22
|
+
ActiveRecord::Base.slave_connection_names << slave_name
|
23
|
+
end
|
29
24
|
|
30
|
-
|
31
|
-
|
25
|
+
spec = { Rails.env => MasterSlave.config.slave_config(slave_name) }
|
26
|
+
resolver = ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new spec
|
27
|
+
spec = resolver.spec(Rails.env.to_sym)
|
32
28
|
|
33
29
|
unless ActiveRecord::Base.respond_to?(spec.adapter_method)
|
34
30
|
raise AdapterNotFound, "database configuration specifies nonexistent #{spec.config[:adapter]} adapter"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module MasterSlave
|
2
|
-
module
|
2
|
+
module Core
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
@@ -47,7 +47,7 @@ module MasterSlave
|
|
47
47
|
|
48
48
|
def with_slave(slave_name)
|
49
49
|
slave_name = slave_name.to_s.strip
|
50
|
-
raise "#{slave_name}
|
50
|
+
raise "The slave name is not exist.(#{slave_name})" unless ActiveRecord::Base.slave_connection_names.include?(slave_name)
|
51
51
|
MasterSlave::RuntimeRegistry.current_slave_name = slave_name
|
52
52
|
MasterSlave::RuntimeRegistry.slave_block = true
|
53
53
|
yield
|
data/lib/master_slave/railtie.rb
CHANGED
@@ -3,10 +3,10 @@ module MasterSlave
|
|
3
3
|
|
4
4
|
config.after_initialize do
|
5
5
|
if File.exist?(MasterSlave::Configuration.config_file)
|
6
|
-
puts "\033[32mmaster_slave is on!\033[0m"
|
7
|
-
ActiveRecord::Base.send :include, MasterSlave::
|
8
|
-
MasterSlave
|
9
|
-
|
6
|
+
puts "\033[32mmaster_slave is on!\033[0m" unless MasterSlave.quiet
|
7
|
+
ActiveRecord::Base.send :include, MasterSlave::Core
|
8
|
+
MasterSlave.setup!
|
9
|
+
elsif !MasterSlave.quiet
|
10
10
|
puts "\033[31mNo such file #{MasterSlave::Configuration.config_file}\033[0m"
|
11
11
|
puts "\033[31mPlease execute `rails g master_slave:config`\033[0m"
|
12
12
|
puts "\033[31mmaster_slave is off!\033[0m"
|
data/lib/master_slave/version.rb
CHANGED
data/lib/master_slave.rb
CHANGED
@@ -1,6 +1,31 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
1
|
+
require 'rails'
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_record'
|
4
|
+
require 'master_slave/core'
|
5
|
+
require 'master_slave/configuration'
|
3
6
|
require 'master_slave/connection_handler'
|
4
7
|
require 'master_slave/runtime_registry'
|
5
8
|
require 'master_slave/version'
|
6
9
|
require 'master_slave/railtie'
|
10
|
+
|
11
|
+
module MasterSlave
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def config
|
15
|
+
@config ||= MasterSlave::Configuration.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def quiet
|
19
|
+
return @quiet if defined?(@quiet)
|
20
|
+
@quiet = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def quiet=(value)
|
24
|
+
@quiet = !!value
|
25
|
+
end
|
26
|
+
|
27
|
+
def setup!
|
28
|
+
MasterSlave::ConnectionHandler.setup_connection
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,69 +1,51 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: master_slave
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
5
|
-
prerelease:
|
4
|
+
version: 4.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tumayun
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
|
15
|
-
name: rails
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 4.0.0
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 4.0.0
|
30
|
-
description: mysql separate read and write.
|
11
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Rails separate read and write.
|
31
14
|
email: tumayun.2010@gmail.com
|
32
15
|
executables: []
|
33
16
|
extensions: []
|
34
17
|
extra_rdoc_files: []
|
35
18
|
files:
|
36
19
|
- lib/master_slave.rb
|
37
|
-
- lib/
|
38
|
-
- lib/rails/generators/config_generator.rb
|
39
|
-
- lib/master_slave/version.rb
|
40
|
-
- lib/master_slave/railtie.rb
|
41
|
-
- lib/master_slave/config.rb
|
20
|
+
- lib/master_slave/configuration.rb
|
42
21
|
- lib/master_slave/connection_handler.rb
|
22
|
+
- lib/master_slave/core.rb
|
23
|
+
- lib/master_slave/railtie.rb
|
43
24
|
- lib/master_slave/runtime_registry.rb
|
44
|
-
- lib/master_slave/
|
25
|
+
- lib/master_slave/version.rb
|
26
|
+
- lib/rails/generators/config_generator.rb
|
27
|
+
- lib/rails/generators/templates/shards.yml
|
45
28
|
homepage: https://github.com/tumayun/master_slave
|
46
29
|
licenses: []
|
30
|
+
metadata: {}
|
47
31
|
post_install_message:
|
48
32
|
rdoc_options: []
|
49
33
|
require_paths:
|
50
34
|
- lib
|
51
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
36
|
requirements:
|
54
|
-
- -
|
37
|
+
- - ">="
|
55
38
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
39
|
+
version: 2.0.0
|
57
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
41
|
requirements:
|
60
|
-
- -
|
42
|
+
- - ">="
|
61
43
|
- !ruby/object:Gem::Version
|
62
44
|
version: '0'
|
63
45
|
requirements: []
|
64
46
|
rubyforge_project:
|
65
|
-
rubygems_version:
|
47
|
+
rubygems_version: 2.2.2
|
66
48
|
signing_key:
|
67
|
-
specification_version:
|
49
|
+
specification_version: 4
|
68
50
|
summary: master_slave.
|
69
51
|
test_files: []
|