Module: Sequel::SchemaSharding
- Defined in:
- lib/sequel/schema-sharding.rb,
lib/sequel/schema-sharding/ring.rb,
lib/sequel/schema-sharding/model.rb,
lib/sequel/schema-sharding/finder.rb,
lib/sequel/schema-sharding/version.rb,
lib/sequel/schema-sharding/logger_proxy.rb,
lib/sequel/schema-sharding/configuration.rb,
lib/sequel/schema-sharding/database_manager.rb,
lib/sequel/schema-sharding/connection_manager.rb,
lib/sequel/schema-sharding/extensions/sequel_ext.rb,
lib/sequel/schema-sharding/extensions/migrations_ext.rb
Defined Under Namespace
Modules: Extensions, ShardedModel
Classes: Configuration, ConnectionManager, DatabaseManager, Finder, LoggerProxy, Ring
Constant Summary
collapse
- VERSION =
"0.6.2"
Class Method Summary
collapse
Class Method Details
.config ⇒ Object
15
16
17
|
# File 'lib/sequel/schema-sharding.rb', line 15
def self.config
@config ||= Sequel::SchemaSharding::Configuration.new(ENV['RACK_ENV'], sharding_yml_path)
end
|
.config=(config) ⇒ Object
19
20
21
|
# File 'lib/sequel/schema-sharding.rb', line 19
def self.config=(config)
@config = config
end
|
.connection_manager ⇒ Object
31
32
33
|
# File 'lib/sequel/schema-sharding.rb', line 31
def self.connection_manager
@connection_manager ||= ConnectionManager.new
end
|
.connection_manager=(connection_manager) ⇒ Object
35
36
37
|
# File 'lib/sequel/schema-sharding.rb', line 35
def self.connection_manager=(connection_manager)
@connection_manager = connection_manager
end
|
.logger ⇒ Object
23
24
25
|
# File 'lib/sequel/schema-sharding.rb', line 23
def self.logger
@logger ||= Logger.new(nil)
end
|
.logger=(logger) ⇒ Object
27
28
29
|
# File 'lib/sequel/schema-sharding.rb', line 27
def self.logger=(logger)
@logger = logger
end
|
.migration_path ⇒ Object
47
48
49
|
# File 'lib/sequel/schema-sharding.rb', line 47
def self.migration_path
@migration_path || raise('You must set the migration path.')
end
|
.migration_path=(path) ⇒ Object
51
52
53
|
# File 'lib/sequel/schema-sharding.rb', line 51
def self.migration_path=(path)
@migration_path = path
end
|
.Model(source) ⇒ Object
Extensions to the Sequel model to allow logical/physical shards. Actual table models should inherit this class like so:
class Cat < Sequel::SchemaSharding::Model
set_columns [:cat_id, :fur, :tongue, :whiskers]
set_sharded_column :cat_id
def self.by_cat_id(id)
shard_for(id).where(cat_id: id)
end
end
18
19
20
21
22
23
24
25
|
# File 'lib/sequel/schema-sharding/model.rb', line 18
def self.Model(source)
klass = Sequel::Model(Sequel::SchemaSharding.connection_manager.default_dataset_for(source))
klass.include(SchemaSharding::ShardedModel)
klass.send(:simple_table=, false)
klass
end
|
.sharding_yml_path ⇒ Object
39
40
41
|
# File 'lib/sequel/schema-sharding.rb', line 39
def self.sharding_yml_path
@sharding_yml_path ||= File.expand_path('../../../config/sharding.yml', __FILE__)
end
|
.sharding_yml_path=(path) ⇒ Object
43
44
45
|
# File 'lib/sequel/schema-sharding.rb', line 43
def self.sharding_yml_path=(path)
@sharding_yml_path = path
end
|