ar-octopus 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -37,7 +37,7 @@ begin
37
37
  gem.add_development_dependency "jeweler", ">= 1.4"
38
38
  gem.add_development_dependency "actionpack", ">= 2.3"
39
39
  gem.add_dependency('activerecord', '>= 2.3')
40
- gem.version = "0.1.1"
40
+ gem.version = "0.1.2"
41
41
  end
42
42
  Jeweler::GemcutterTasks.new
43
43
  rescue LoadError
data/ar-octopus.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ar-octopus}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Thiago Pradi", "Mike Perham"]
12
- s.date = %q{2010-09-04}
12
+ s.date = %q{2010-10-02}
13
13
  s.description = %q{This gem allows you to use sharded databases with ActiveRecord. this also provides a interface for replication and for running migrations with multiples shards.}
14
14
  s.email = %q{tchandy@gmail.com}
15
15
  s.extra_rdoc_files = [
data/lib/octopus.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "yaml"
2
+ require "erb"
2
3
 
3
4
  module Octopus
4
5
  def self.env()
@@ -10,7 +11,7 @@ module Octopus
10
11
  end
11
12
 
12
13
  def self.config()
13
- @config ||= HashWithIndifferentAccess.new(YAML.load_file(Octopus.directory() + "/config/shards.yml"))[Octopus.env()]
14
+ @config ||= HashWithIndifferentAccess.new(YAML.load(ERB.new(File.open(Octopus.directory() + "/config/shards.yml").read()).result))[Octopus.env()]
14
15
 
15
16
  if @config && @config['enviroments']
16
17
  self.enviroments = @config['enviroments']
data/lib/octopus/proxy.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Octopus::Proxy
2
- attr_accessor :current_model, :current_shard, :current_group, :block, :using_enabled, :last_current_shard
2
+ attr_accessor :current_model, :current_shard, :current_group, :block, :using_enabled, :last_current_shard, :config
3
3
 
4
4
  def initialize(config)
5
5
  initialize_shards(config)
@@ -10,6 +10,7 @@ class Octopus::Proxy
10
10
  @shards = {}
11
11
  @groups = {}
12
12
  @shards[:master] = ActiveRecord::Base.connection_pool()
13
+ @config = ActiveRecord::Base.connection_pool.connection.instance_variable_get(:@config)
13
14
  @current_shard = :master
14
15
 
15
16
  if !config.nil? && config.has_key?("verify_connection")
@@ -1,9 +1,12 @@
1
+ mysql: &mysql
2
+ adapter: <%= 'mysql' %>
3
+ host: localhost
4
+
1
5
  octopus:
2
6
  shards:
3
7
  alone_shard:
4
- adapter: mysql
5
- host: localhost
6
8
  database: octopus_shard5
9
+ <<: *mysql
7
10
 
8
11
  postgresql_shard:
9
12
  adapter: postgresql
@@ -18,46 +21,38 @@ octopus:
18
21
 
19
22
  history_shards:
20
23
  aug2009:
21
- adapter: mysql
22
- host: localhost
23
24
  database: octopus_shard2
25
+ <<: *mysql
24
26
  aug2010:
25
- adapter: mysql
26
- host: localhost
27
27
  database: octopus_shard3
28
+ <<: *mysql
28
29
  aug2011:
29
- adapter: mysql
30
- host: localhost
31
30
  database: octopus_shard4
31
+ <<: *mysql
32
32
 
33
33
  country_shards:
34
34
  canada:
35
- adapter: mysql
36
- host: localhost
37
35
  database: octopus_shard2
36
+ <<: *mysql
38
37
  brazil:
39
- adapter: mysql
40
- host: localhost
41
38
  database: octopus_shard3
39
+ <<: *mysql
42
40
  russia:
43
- adapter: mysql
44
- host: localhost
45
41
  database: octopus_shard4
42
+ <<: *mysql
46
43
 
47
44
 
48
45
  production_raise_error:
49
46
  shards:
50
47
  history_shards:
51
48
  duplicated_shard_name:
52
- adapter: mysql
53
- host: localhost
54
49
  database: octopus_shard5
50
+ <<: *mysql
55
51
 
56
52
  country_shards:
57
53
  duplicated_shard_name:
58
- adapter: mysql
59
- host: localhost
60
54
  database: octopus_shard4
55
+ <<: *mysql
61
56
 
62
57
  production_replicated:
63
58
  replicated: true
@@ -65,42 +60,34 @@ production_replicated:
65
60
 
66
61
  shards:
67
62
  slave1:
68
- adapter: mysql
69
- host: localhost
70
63
  database: octopus_shard2
64
+ <<: *mysql
71
65
  slave2:
72
- adapter: mysql
73
- host: localhost
74
66
  database: octopus_shard3
67
+ <<: *mysql
75
68
  slave3:
76
- adapter: mysql
77
- host: localhost
78
69
  database: octopus_shard4
70
+ <<: *mysql
79
71
  slave4:
80
- adapter: mysql
81
- host: localhost
82
72
  database: octopus_shard5
73
+ <<: *mysql
83
74
 
84
75
 
85
76
  production_fully_replicated:
86
77
  replicated: true
87
78
  shards:
88
79
  slave1:
89
- adapter: mysql
90
- host: localhost
91
80
  database: octopus_shard2
81
+ <<: *mysql
92
82
  slave2:
93
- adapter: mysql
94
- host: localhost
95
83
  database: octopus_shard3
84
+ <<: *mysql
96
85
  slave3:
97
- adapter: mysql
98
- host: localhost
99
86
  database: octopus_shard4
87
+ <<: *mysql
100
88
  slave4:
101
- adapter: mysql
102
- host: localhost
103
89
  database: octopus_shard5
90
+ <<: *mysql
104
91
 
105
92
  octopus_rails:
106
93
  replicated: true
@@ -111,44 +98,34 @@ octopus_rails:
111
98
 
112
99
  staging:
113
100
  slave1:
114
- adapter: mysql
115
- host: localhost
116
101
  database: octopus_shard2
102
+ <<: *mysql
117
103
  slave2:
118
- adapter: mysql
119
- host: localhost
120
104
  database: octopus_shard3
105
+ <<: *mysql
121
106
 
122
107
  production:
123
108
  slave3:
124
- adapter: mysql
125
- host: localhost
126
109
  database: octopus_shard4
110
+ <<: *mysql
127
111
  slave4:
128
- adapter: mysql
129
- host: localhost
130
112
  database: octopus_shard5
113
+ <<: *mysql
131
114
 
132
115
  not_entire_sharded:
133
116
  entire_sharded: false
134
117
  shards:
135
118
  europe:
136
- adapter: mysql
137
- host: localhost
138
119
  database: octopus_shard2
120
+ <<: *mysql
139
121
  canada:
140
- adapter: mysql
141
- host: localhost
142
122
  database: octopus_shard3
123
+ <<: *mysql
143
124
  brazil:
144
- adapter: mysql
145
- host: localhost
146
125
  database: octopus_shard4
126
+ <<: *mysql
147
127
  russia:
148
- adapter: mysql
149
- host: localhost
150
128
  database: octopus_shard5
129
+ <<: *mysql
151
130
 
152
131
 
153
-
154
-
@@ -20,6 +20,10 @@ describe Octopus::Proxy do
20
20
  it "should not verify connections for default" do
21
21
  proxy.instance_variable_get(:@verify_connection).should be_false
22
22
  end
23
+
24
+ it "should work with thiking sphinx" do
25
+ proxy.instance_variable_get(:@config).should == {:adapter=>"mysql", :password=>"", :database=>"octopus_shard1", :username=>"root"}
26
+ end
23
27
 
24
28
  describe "should raise error if you have duplicated shard names" do
25
29
  before(:each) do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar-octopus
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Thiago Pradi
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-04 00:00:00 -03:00
19
+ date: 2010-10-02 00:00:00 -03:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency