master_slave 4.0.0 → 4.1.0
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.
- 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: []
|