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 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.open(self.class.config_file).read).result)
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
- ActiveRecord::Base.slave_connection_names << slave_name.to_s.strip
28
- spec = MasterSlave.config.slave_config(slave_name).symbolize_keys
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
- resolver = ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new spec, spec
31
- spec = resolver.spec
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 Base
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} not exist" unless ActiveRecord::Base.slave_connection_names.include?(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
@@ -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::Base
8
- MasterSlave::ConnectionHandler.setup
9
- else
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"
@@ -1,3 +1,3 @@
1
1
  module MasterSlave
2
- VERSION = '4.0.0'
2
+ VERSION = '4.1.0'
3
3
  end
data/lib/master_slave.rb CHANGED
@@ -1,6 +1,31 @@
1
- require 'master_slave/base'
2
- require 'master_slave/config'
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.0.0
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: 2013-11-22 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
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/rails/generators/templates/shards.yml
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/base.rb
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: '0'
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: 1.8.23
47
+ rubygems_version: 2.2.2
66
48
  signing_key:
67
- specification_version: 3
49
+ specification_version: 4
68
50
  summary: master_slave.
69
51
  test_files: []