rails-sharding 0.1.0 → 0.1.1
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 +4 -4
- data/.gitignore +1 -0
- data/README.md +2 -1
- data/lib/rails/sharding/version.rb +1 -1
- data/lib/tasks/rails-sharding.rake +25 -27
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05fd12669243e14c2d6f1b1748acf461b8316dbb
|
4
|
+
data.tar.gz: d1508fddee17b0a5c7eb0203b8dd1c9b52b74c66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ea75e62463c090f6806baedfd648768007c192d4e3a9e162c162083eb015cacb8eb6dfbc8ed0ce739bb9cc17c9a3889abc6b0bd02bb24f3f76470478996e85c
|
7
|
+
data.tar.gz: 524dfe1e8c7ea123209746accfdb726ea0a6011f43c460cbcf2cff3c11531b2ee7afa99c26091d54ad8792dd05dca62aff2badaee5290babb1f72631ed0e94d0
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/hsgubert/rails-sharding)
|
4
4
|
[](https://codeclimate.com/github/hsgubert/rails-sharding)
|
5
|
-
|
5
|
+
[](https://codeclimate.com/github/hsgubert/rails-sharding/coverage)
|
6
|
+
[](https://badge.fury.io/rb/rails-sharding)
|
6
7
|
|
7
8
|
Simple and robust sharding for Rails, including Migrations and ActiveRecord extensions
|
8
9
|
|
@@ -81,15 +81,11 @@ shards_namespace = namespace :shards do
|
|
81
81
|
Rails::Sharding.configurations.each do |shard_group, shards_configurations|
|
82
82
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
83
83
|
|
84
|
-
# configures path for schemas of this shard group and creates dir if necessary
|
85
|
-
shard_group_schemas_dir = File.join(Rails::Sharding::Config.shards_schemas_dir, shard_group.to_s)
|
86
|
-
FileUtils.mkdir_p(shard_group_schemas_dir)
|
87
|
-
|
88
84
|
shards_configurations.each do |shard, configuration|
|
89
85
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
90
86
|
puts "== Dumping schema of #{shard_group}:#{shard}"
|
91
87
|
|
92
|
-
schema_filename =
|
88
|
+
schema_filename = shard_schema_path(shard_group, shard)
|
93
89
|
File.open(schema_filename, "w:utf-8") do |file|
|
94
90
|
Rails::Sharding.using_shard(shard_group, shard) do
|
95
91
|
ActiveRecord::SchemaDumper.dump(Rails::Sharding::ConnectionHandler.retrieve_connection(shard_group, shard), file)
|
@@ -108,16 +104,13 @@ shards_namespace = namespace :shards do
|
|
108
104
|
Rails::Sharding.configurations.each do |shard_group, shards_configurations|
|
109
105
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
110
106
|
|
111
|
-
|
112
|
-
shard_group_schemas_path = 'db/shards_schemas/' + shard_group.to_s
|
113
|
-
Rails.application.paths.add shard_group_schemas_path
|
114
|
-
shard_group_schemas_dir = Rails.application.paths[shard_group_schemas_path].to_a.first
|
107
|
+
setup_migrations_path(shard_group)
|
115
108
|
|
116
109
|
shards_configurations.each do |shard, configuration|
|
117
110
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
118
111
|
puts "== Loading schema of #{shard_group}:#{shard}"
|
119
112
|
|
120
|
-
schema_filename =
|
113
|
+
schema_filename = shard_schema_path(shard_group, shard)
|
121
114
|
ActiveRecord::Tasks::DatabaseTasks.check_schema_file(schema_filename)
|
122
115
|
Rails::Sharding.using_shard(shard_group, shard) do
|
123
116
|
load(schema_filename)
|
@@ -154,10 +147,7 @@ shards_namespace = namespace :shards do
|
|
154
147
|
Rails::Sharding.configurations.each do |shard_group, shards_configurations|
|
155
148
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
156
149
|
|
157
|
-
|
158
|
-
shard_group_migrations_path = 'db/shards_migrations/' + shard_group.to_s
|
159
|
-
Rails.application.paths.add shard_group_migrations_path
|
160
|
-
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = Rails.application.paths[shard_group_migrations_path].to_a
|
150
|
+
setup_migrations_path(shard_group)
|
161
151
|
|
162
152
|
shards_configurations.each do |shard, configuration|
|
163
153
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
@@ -179,10 +169,7 @@ shards_namespace = namespace :shards do
|
|
179
169
|
Rails::Sharding.configurations.each do |shard_group, shards_configurations|
|
180
170
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
181
171
|
|
182
|
-
|
183
|
-
shard_group_migrations_path = 'db/shards_migrations/' + shard_group.to_s
|
184
|
-
Rails.application.paths.add shard_group_migrations_path
|
185
|
-
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = Rails.application.paths[shard_group_migrations_path].to_a
|
172
|
+
setup_migrations_path(shard_group)
|
186
173
|
|
187
174
|
shards_configurations.each do |shard, configuration|
|
188
175
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
@@ -203,10 +190,7 @@ shards_namespace = namespace :shards do
|
|
203
190
|
Rails::Sharding.configurations.each do |shard_group, shards_configurations|
|
204
191
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
205
192
|
|
206
|
-
|
207
|
-
shard_group_migrations_path = 'db/shards_migrations/' + shard_group.to_s
|
208
|
-
Rails.application.paths.add shard_group_migrations_path
|
209
|
-
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = Rails.application.paths[shard_group_migrations_path].to_a
|
193
|
+
setup_migrations_path(shard_group)
|
210
194
|
|
211
195
|
shards_configurations.each do |shard, configuration|
|
212
196
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
@@ -242,10 +226,7 @@ shards_namespace = namespace :shards do
|
|
242
226
|
Rails::Sharding.test_configurations.each do |shard_group, shards_configurations|
|
243
227
|
next if ENV["SHARD_GROUP"] && ENV["SHARD_GROUP"] != shard_group.to_s
|
244
228
|
|
245
|
-
|
246
|
-
shard_group_schemas_path = 'db/shards_schemas/' + shard_group.to_s
|
247
|
-
Rails.application.paths.add shard_group_schemas_path
|
248
|
-
shard_group_schemas_dir = Rails.application.paths[shard_group_schemas_path].to_a.first
|
229
|
+
setup_migrations_path(shard_group)
|
249
230
|
|
250
231
|
shards_configurations.each do |shard, configuration|
|
251
232
|
next if ENV["SHARD"] && ENV["SHARD"] != shard.to_s
|
@@ -256,7 +237,7 @@ shards_namespace = namespace :shards do
|
|
256
237
|
should_reconnect = Rails::Sharding::ConnectionHandler.connection_pool(shard_group, shard).active_connection?
|
257
238
|
Rails::Sharding::ConnectionHandler.establish_connection(shard_group, shard, 'test')
|
258
239
|
|
259
|
-
schema_filename =
|
240
|
+
schema_filename = shard_schema_path(shard_group, shard)
|
260
241
|
ActiveRecord::Tasks::DatabaseTasks.check_schema_file(schema_filename)
|
261
242
|
Rails::Sharding.using_shard(shard_group, shard) do
|
262
243
|
ActiveRecord::Schema.verbose = false
|
@@ -306,4 +287,21 @@ shards_namespace = namespace :shards do
|
|
306
287
|
end
|
307
288
|
end
|
308
289
|
end
|
290
|
+
|
291
|
+
# Configures path for migrations of this shard group and creates dir if necessary
|
292
|
+
# We need this to run migrations (so we can find them)
|
293
|
+
# We need this load schemas (se we can build the schema_migrations table)
|
294
|
+
def setup_migrations_path(shard_group)
|
295
|
+
shard_group_migrations_dir = File.join(Rails::Sharding::Config.shards_migrations_dir, shard_group.to_s)
|
296
|
+
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [shard_group_migrations_dir]
|
297
|
+
ActiveRecord::Migrator.migrations_paths = [shard_group_migrations_dir]
|
298
|
+
FileUtils.mkdir_p(shard_group_migrations_dir)
|
299
|
+
end
|
300
|
+
|
301
|
+
# configures path for schemas of this shard group and creates dir if necessary
|
302
|
+
def shard_schema_path(shard_group, shard_name)
|
303
|
+
shard_group_schemas_dir = File.join(Rails::Sharding::Config.shards_schemas_dir, shard_group.to_s)
|
304
|
+
FileUtils.mkdir_p(shard_group_schemas_dir)
|
305
|
+
File.join(shard_group_schemas_dir, shard_name + "_schema.rb")
|
306
|
+
end
|
309
307
|
end
|