data_fabric 1.2.7 → 1.3.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.
- data/CHANGELOG +7 -0
- data/README.rdoc +9 -8
- data/Rakefile +9 -41
- data/TESTING.rdoc +3 -3
- data/example23/Rakefile +28 -27
- data/example23/config/environment.rb +4 -2
- data/example30/Gemfile +5 -0
- data/example30/Gemfile.lock +79 -0
- data/example30/README +256 -0
- data/example30/Rakefile +52 -0
- data/{example → example30}/app/controllers/accounts_controller.rb +0 -0
- data/{example/app/controllers/application.rb → example30/app/controllers/application_controller.rb} +0 -0
- data/{example → example30}/app/controllers/figments_controller.rb +0 -0
- data/example30/app/helpers/application_helper.rb +2 -0
- data/{example → example30}/app/models/account.rb +0 -0
- data/{example → example30}/app/models/figment.rb +0 -0
- data/{example → example30}/app/views/accounts/index.html.erb +2 -2
- data/{example → example30}/app/views/layouts/application.html.erb +0 -0
- data/example30/config.ru +4 -0
- data/example30/config/application.rb +42 -0
- data/example30/config/boot.rb +13 -0
- data/{example → example30}/config/database.yml +0 -0
- data/example30/config/environment.rb +5 -0
- data/example30/config/environments/development.rb +26 -0
- data/example30/config/environments/production.rb +49 -0
- data/example30/config/environments/test.rb +35 -0
- data/example30/config/initializers/backtrace_silencers.rb +7 -0
- data/{example → example30}/config/initializers/inflections.rb +2 -2
- data/{example → example30}/config/initializers/mime_types.rb +0 -0
- data/example30/config/initializers/secret_token.rb +7 -0
- data/example30/config/initializers/session_store.rb +8 -0
- data/example30/config/locales/en.yml +5 -0
- data/example30/config/routes.rb +65 -0
- data/example30/db/development.sqlite3 +0 -0
- data/{example → example30}/db/migrate/20080702154628_create_accounts.rb +0 -0
- data/{example → example30}/db/migrate/20080702154820_create_figments.rb +0 -0
- data/example30/db/s0_development.sqlite3 +0 -0
- data/example30/db/s0_test.sqlite3 +0 -0
- data/example30/db/s1_development.sqlite3 +0 -0
- data/example30/db/s1_test.sqlite3 +0 -0
- data/{example23 → example30}/db/schema.rb +7 -6
- data/example30/db/seeds.rb +7 -0
- data/example30/db/test.sqlite3 +0 -0
- data/example30/log/development.log +132 -0
- data/example30/log/test.log +444 -0
- data/example30/script/rails +6 -0
- data/{example → example30}/test/fixtures/accounts.yml +0 -0
- data/{example → example30}/test/functional/accounts_controller_test.rb +0 -0
- data/{example → example30}/test/integration/account_figments_test.rb +0 -0
- data/example30/test/performance/browsing_test.rb +9 -0
- data/example30/test/test_helper.rb +13 -0
- data/lib/data_fabric.rb +14 -21
- data/lib/data_fabric/{ar22.rb → connection_proxy.rb} +43 -63
- data/lib/data_fabric/extensions.rb +29 -0
- data/lib/data_fabric/version.rb +1 -1
- data/test/connection_test.rb +17 -12
- data/test/database_test.rb +3 -11
- data/test/test_helper.rb +3 -8
- data/test/thread_test.rb +0 -14
- data/test/vr_austin_master.db +0 -0
- data/test/vr_austin_slave.db +0 -0
- data/test/vr_dallas_master.db +0 -0
- data/test/vr_dallas_slave.db +0 -0
- metadata +72 -99
- data/example/Rakefile +0 -58
- data/example/app/helpers/accounts_helper.rb +0 -2
- data/example/app/helpers/application_helper.rb +0 -3
- data/example/app/helpers/figments_helper.rb +0 -2
- data/example/config/boot.rb +0 -109
- data/example/config/environment.rb +0 -67
- data/example/config/environments/development.rb +0 -17
- data/example/config/environments/production.rb +0 -22
- data/example/config/environments/test.rb +0 -22
- data/example/config/initializers/new_rails_defaults.rb +0 -15
- data/example/config/routes.rb +0 -45
- data/example/db/schema.rb +0 -28
- data/example/public/404.html +0 -30
- data/example/public/422.html +0 -30
- data/example/public/500.html +0 -30
- data/example/public/dispatch.cgi +0 -10
- data/example/public/dispatch.fcgi +0 -24
- data/example/public/dispatch.rb +0 -10
- data/example/public/favicon.ico +0 -0
- data/example/public/images/rails.png +0 -0
- data/example/public/robots.txt +0 -5
- data/example/script/about +0 -3
- data/example/script/console +0 -3
- data/example/script/dbconsole +0 -3
- data/example/script/destroy +0 -3
- data/example/script/generate +0 -3
- data/example/script/performance/benchmarker +0 -3
- data/example/script/performance/profiler +0 -3
- data/example/script/performance/request +0 -3
- data/example/script/plugin +0 -3
- data/example/script/process/inspector +0 -3
- data/example/script/process/reaper +0 -3
- data/example/script/process/spawner +0 -3
- data/example/script/runner +0 -3
- data/example/script/server +0 -3
- data/example/test/test_helper.rb +0 -41
- data/example23/db/development.sqlite3 +0 -0
- data/example23/db/s0_development.sqlite3 +0 -0
- data/example23/db/s0_test.sqlite3 +0 -0
- data/example23/db/s1_development.sqlite3 +0 -0
- data/example23/db/s1_test.sqlite3 +0 -0
- data/example23/db/test.sqlite3 +0 -0
- data/example23/log/development.log +0 -295
- data/example23/log/test.log +0 -551
- data/example23/vendor/plugins/data_fabric/init.rb +0 -3
- data/example23/vendor/plugins/data_fabric/lib/data_fabric.rb +0 -106
- data/example23/vendor/plugins/data_fabric/lib/data_fabric/ar20.rb +0 -133
- data/example23/vendor/plugins/data_fabric/lib/data_fabric/ar22.rb +0 -181
- data/example23/vendor/plugins/data_fabric/lib/data_fabric/dash.rb +0 -20
- data/example23/vendor/plugins/data_fabric/lib/data_fabric/version.rb +0 -7
- data/init.rb +0 -3
- data/lib/data_fabric/ar20.rb +0 -133
- data/lib/data_fabric/dash.rb +0 -20
- data/rails/init.rb +0 -1
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
require File.expand_path('../../config/environment', __FILE__)
|
3
|
+
require 'rails/test_help'
|
4
|
+
|
5
|
+
class ActiveSupport::TestCase
|
6
|
+
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
7
|
+
#
|
8
|
+
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
9
|
+
# -- they do not yet inherit this setting
|
10
|
+
fixtures :all
|
11
|
+
|
12
|
+
# Add more helper methods to be used by all tests here...
|
13
|
+
end
|
data/lib/data_fabric.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
require 'active_record/version'
|
3
|
+
require 'active_record/connection_adapters/abstract/connection_pool'
|
4
|
+
require 'active_record/connection_adapters/abstract/connection_specification'
|
3
5
|
require 'data_fabric/version'
|
4
6
|
|
5
7
|
# DataFabric adds a new level of flexibility to ActiveRecord connection handling.
|
@@ -38,20 +40,12 @@ require 'data_fabric/version'
|
|
38
40
|
# end
|
39
41
|
module DataFabric
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
def self.
|
46
|
-
logger =
|
47
|
-
log { "Loading data_fabric #{DataFabric::Version::STRING} with ActiveRecord #{ActiveRecord::VERSION::STRING}" }
|
48
|
-
|
49
|
-
if ActiveRecord::VERSION::STRING < '2.2.0'
|
50
|
-
require 'data_fabric/ar20'
|
51
|
-
else
|
52
|
-
require 'data_fabric/ar22'
|
53
|
-
end
|
54
|
-
ActiveRecord::Base.send(:include, DataFabric::Extensions)
|
43
|
+
def self.logger
|
44
|
+
@logger ||= ActiveRecord::Base.logger || Logger.new('/dev/null')
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.logger=(log)
|
48
|
+
@logger = log
|
55
49
|
end
|
56
50
|
|
57
51
|
def self.activate_shard(shards, &block)
|
@@ -85,9 +79,9 @@ module DataFabric
|
|
85
79
|
def self.active_shard(group)
|
86
80
|
raise ArgumentError, 'No shard has been activated' unless Thread.current[:shards]
|
87
81
|
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
shard = Thread.current[:shards][group.to_s]
|
83
|
+
raise ArgumentError, "No active shard for #{group}" unless shard
|
84
|
+
shard
|
91
85
|
end
|
92
86
|
|
93
87
|
def self.shard_active_for?(group)
|
@@ -99,8 +93,7 @@ module DataFabric
|
|
99
93
|
Thread.current[:shards] = {} unless Thread.current[:shards]
|
100
94
|
end
|
101
95
|
|
102
|
-
def self.log(level=Logger::INFO, &block)
|
103
|
-
logger && logger.add(level, &block)
|
104
|
-
end
|
105
|
-
|
106
96
|
end
|
97
|
+
|
98
|
+
require 'data_fabric/extensions'
|
99
|
+
ActiveRecord::Base.send(:include, DataFabric::Extensions)
|
@@ -1,49 +1,47 @@
|
|
1
|
+
module DataFabric
|
2
|
+
module ActiveRecordConnectionMethods
|
3
|
+
def self.included(base)
|
4
|
+
base.alias_method_chain :reload, :master
|
5
|
+
end
|
1
6
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
DataFabric::ConnectionProxy.shard_pools.each_value { |pool| pool.release_connection }
|
7
|
+
def reload_with_master(*args, &block)
|
8
|
+
connection.with_master { reload_without_master }
|
9
|
+
end
|
6
10
|
end
|
7
|
-
alias_method_chain :clear_active_connections!, :data_fabric
|
8
|
-
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
def connection_pool
|
38
|
-
raise "dynamic connection switching means you cannot get direct access to a pool"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
12
|
+
class StringProxy
|
13
|
+
def initialize(&block)
|
14
|
+
@proc = block
|
15
|
+
end
|
16
|
+
def to_s
|
17
|
+
@proc.call
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class PoolProxy
|
22
|
+
def initialize(proxy)
|
23
|
+
@proxy = proxy
|
24
|
+
end
|
25
|
+
def connection
|
26
|
+
@proxy
|
27
|
+
end
|
28
|
+
def release_connection
|
29
|
+
DataFabric.logger.debug { 'data_fabric does not implement release_connection' }
|
30
|
+
end
|
31
|
+
def spec
|
32
|
+
@proxy.spec
|
33
|
+
end
|
34
|
+
def with_connection
|
35
|
+
yield @proxy
|
36
|
+
end
|
37
|
+
def connected?
|
38
|
+
@proxy.connected?
|
42
39
|
end
|
43
40
|
end
|
44
41
|
|
45
42
|
class ConnectionProxy
|
46
43
|
cattr_accessor :shard_pools
|
44
|
+
attr_accessor :spec
|
47
45
|
|
48
46
|
def initialize(model_class, options)
|
49
47
|
@model_class = model_class
|
@@ -73,7 +71,7 @@ module DataFabric
|
|
73
71
|
end
|
74
72
|
|
75
73
|
def method_missing(method, *args, &block)
|
76
|
-
DataFabric.
|
74
|
+
DataFabric.logger.debug { "Calling #{method} on #{connection}" }
|
77
75
|
connection.send(method, *args, &block)
|
78
76
|
end
|
79
77
|
|
@@ -94,6 +92,10 @@ module DataFabric
|
|
94
92
|
current_pool.connected?
|
95
93
|
end
|
96
94
|
|
95
|
+
def connection
|
96
|
+
current_pool.connection
|
97
|
+
end
|
98
|
+
|
97
99
|
private
|
98
100
|
|
99
101
|
def in_transaction?
|
@@ -114,7 +116,7 @@ module DataFabric
|
|
114
116
|
config = config.symbolize_keys
|
115
117
|
adapter_method = "#{config[:adapter]}_connection"
|
116
118
|
initialize_adapter(config[:adapter])
|
117
|
-
ActiveRecord::Base::ConnectionSpecification.new(config, adapter_method)
|
119
|
+
@spec = ActiveRecord::Base::ConnectionSpecification.new(config, adapter_method)
|
118
120
|
end
|
119
121
|
|
120
122
|
def initialize_adapter(adapter)
|
@@ -143,10 +145,6 @@ module DataFabric
|
|
143
145
|
end
|
144
146
|
end
|
145
147
|
|
146
|
-
def connection
|
147
|
-
current_pool.connection
|
148
|
-
end
|
149
|
-
|
150
148
|
def set_role(role)
|
151
149
|
Thread.current[:data_fabric_role] = role
|
152
150
|
end
|
@@ -160,22 +158,4 @@ module DataFabric
|
|
160
158
|
end
|
161
159
|
end
|
162
160
|
|
163
|
-
|
164
|
-
def self.included(base)
|
165
|
-
base.alias_method_chain :reload, :master
|
166
|
-
end
|
167
|
-
|
168
|
-
def reload_with_master(*args, &block)
|
169
|
-
connection.with_master { reload_without_master }
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
class StringProxy
|
174
|
-
def initialize(&block)
|
175
|
-
@proc = block
|
176
|
-
end
|
177
|
-
def to_s
|
178
|
-
@proc.call
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
161
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'data_fabric/connection_proxy'
|
2
|
+
|
3
|
+
class ActiveRecord::ConnectionAdapters::ConnectionHandler
|
4
|
+
def clear_active_connections_with_data_fabric!
|
5
|
+
clear_active_connections_without_data_fabric!
|
6
|
+
DataFabric::ConnectionProxy.shard_pools.each_value { |pool| pool.release_connection }
|
7
|
+
end
|
8
|
+
alias_method_chain :clear_active_connections!, :data_fabric
|
9
|
+
end
|
10
|
+
|
11
|
+
module DataFabric
|
12
|
+
module Extensions
|
13
|
+
def self.included(model)
|
14
|
+
DataFabric.logger.info { "Loading data_fabric #{DataFabric::Version::STRING} with ActiveRecord #{ActiveRecord::VERSION::STRING}" }
|
15
|
+
|
16
|
+
# Wire up ActiveRecord::Base
|
17
|
+
model.extend ClassMethods
|
18
|
+
ConnectionProxy.shard_pools = {}
|
19
|
+
end
|
20
|
+
|
21
|
+
# Class methods injected into ActiveRecord::Base
|
22
|
+
module ClassMethods
|
23
|
+
def data_fabric(options)
|
24
|
+
DataFabric.logger.info { "Creating data_fabric proxy for class #{name}" }
|
25
|
+
connection_handler.connection_pools[name] = PoolProxy.new(ConnectionProxy.new(self, options))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/data_fabric/version.rb
CHANGED
data/test/connection_test.rb
CHANGED
@@ -14,21 +14,29 @@ class TheWholeEnchilada < ActiveRecord::Base
|
|
14
14
|
end
|
15
15
|
|
16
16
|
class AdapterMock < ActiveRecord::ConnectionAdapters::AbstractAdapter
|
17
|
-
# Minimum required to perform a find with no results
|
17
|
+
# Minimum required to perform a find with no results.
|
18
|
+
# Works on 2.3.10, 3.0.0 and 3.0.3.
|
18
19
|
def columns(table_name, name=nil)
|
19
|
-
[]
|
20
|
+
[ActiveRecord::ConnectionAdapters::Column.new('id', 0, :integer, false)]
|
21
|
+
end
|
22
|
+
def primary_key(name)
|
23
|
+
:id
|
24
|
+
end
|
25
|
+
def adapter_name
|
26
|
+
'mysql'
|
20
27
|
end
|
21
28
|
def select(sql, name=nil)
|
22
29
|
[]
|
23
30
|
end
|
24
31
|
def execute(sql, name=nil)
|
25
|
-
|
32
|
+
[]
|
26
33
|
end
|
27
|
-
|
28
|
-
|
29
|
-
|
34
|
+
def tables
|
35
|
+
["enchiladas", "the_whole_burritos"]
|
36
|
+
end
|
37
|
+
def table_exists?(name)
|
38
|
+
true
|
30
39
|
end
|
31
|
-
|
32
40
|
def method_missing(name, *args)
|
33
41
|
raise ArgumentError, "#{self.class.name} missing '#{name}': #{args.inspect}"
|
34
42
|
end
|
@@ -98,11 +106,8 @@ class ConnectionTest < Test::Unit::TestCase
|
|
98
106
|
private
|
99
107
|
|
100
108
|
def setup_configuration_for(clazz, name)
|
101
|
-
|
102
|
-
|
103
|
-
else
|
104
|
-
flexmock(clazz).should_receive(:mysql_connection).and_return(AdapterMock.new(RawConnection.new))
|
105
|
-
end
|
109
|
+
flexmock(ActiveRecord::ConnectionAdapters::ConnectionPool).new_instances.should_receive(
|
110
|
+
:new_connection).and_return(AdapterMock.new(RawConnection.new))
|
106
111
|
ActiveRecord::Base.configurations ||= HashWithIndifferentAccess.new
|
107
112
|
ActiveRecord::Base.configurations[name] = HashWithIndifferentAccess.new({ :adapter => 'mysql', :database => name, :host => 'localhost'})
|
108
113
|
end
|
data/test/database_test.rb
CHANGED
@@ -10,21 +10,13 @@ class DatabaseTest < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
def setup
|
12
12
|
ActiveRecord::Base.configurations = load_database_yml
|
13
|
-
|
14
|
-
DataFabric::ConnectionProxy.shard_pools.clear
|
15
|
-
end
|
13
|
+
DataFabric::ConnectionProxy.shard_pools.clear
|
16
14
|
end
|
17
15
|
|
18
|
-
def
|
19
|
-
return unless ar22?
|
20
|
-
|
16
|
+
def test_features
|
21
17
|
DataFabric.activate_shard :city => :dallas do
|
22
18
|
assert_equal 'fiveruns_city_dallas_test_slave', TheWholeBurrito.connection.connection_name
|
23
|
-
|
24
|
-
assert_raises RuntimeError do
|
25
|
-
TheWholeBurrito.connection_pool
|
26
|
-
end
|
27
|
-
|
19
|
+
assert_equal DataFabric::PoolProxy, TheWholeBurrito.connection_pool.class
|
28
20
|
assert !TheWholeBurrito.connected?
|
29
21
|
|
30
22
|
# Should use the slave
|
data/test/test_helper.rb
CHANGED
@@ -6,6 +6,8 @@ Dir.chdir(ROOT_PATH)
|
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
8
|
require 'test/unit'
|
9
|
+
require 'erb'
|
10
|
+
require 'logger'
|
9
11
|
|
10
12
|
version = ENV['AR_VERSION']
|
11
13
|
if version
|
@@ -18,20 +20,13 @@ require 'active_record/version'
|
|
18
20
|
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
19
21
|
ActiveRecord::Base.logger.level = Logger::WARN
|
20
22
|
|
21
|
-
|
22
|
-
deps = defined?(ActiveSupport::Dependencies) ? ActiveSupport::Dependencies : Dependencies
|
23
|
-
deps.load_paths << File.join(File.dirname(__FILE__), '../lib')
|
24
|
-
require 'init'
|
23
|
+
require 'data_fabric'
|
25
24
|
|
26
25
|
def load_database_yml
|
27
26
|
filename = DATABASE_YML_PATH
|
28
27
|
YAML::load(ERB.new(IO.read(filename)).result)
|
29
28
|
end
|
30
29
|
|
31
|
-
def ar22?
|
32
|
-
ActiveRecord::VERSION::STRING >= '2.2.0'
|
33
|
-
end
|
34
|
-
|
35
30
|
if !File.exist?(DATABASE_YML_PATH)
|
36
31
|
puts "\n*** ERROR ***:\n" <<
|
37
32
|
"You must have a 'test/database.yml' file in order to run the unit tests. " <<
|
data/test/thread_test.rb
CHANGED
@@ -5,20 +5,6 @@ class ThreadTest < Test::Unit::TestCase
|
|
5
5
|
|
6
6
|
MUTEX = Mutex.new
|
7
7
|
|
8
|
-
if ActiveRecord::VERSION::STRING < '2.2.0'
|
9
|
-
def test_concurrency_not_allowed
|
10
|
-
assert_raise ArgumentError do
|
11
|
-
Object.class_eval %{
|
12
|
-
class ThreadedEnchilada < ActiveRecord::Base
|
13
|
-
self.allow_concurrency = true
|
14
|
-
set_table_name :enchiladas
|
15
|
-
data_fabric :prefix => 'fiveruns', :replicated => true, :shard_by => :city
|
16
|
-
end
|
17
|
-
}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
8
|
def test_class_and_instance_connections
|
23
9
|
Object.class_eval %{
|
24
10
|
class ThreadedEnchilada < ActiveRecord::Base
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 1
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 1.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 1.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mike Perham
|
@@ -14,11 +14,11 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-11-21 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: flexmock
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
@@ -30,20 +30,7 @@ dependencies:
|
|
30
30
|
version: "0"
|
31
31
|
type: :development
|
32
32
|
version_requirements: *id001
|
33
|
-
|
34
|
-
name: flexmock
|
35
|
-
prerelease: false
|
36
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 0
|
43
|
-
version: "0"
|
44
|
-
type: :development
|
45
|
-
version_requirements: *id002
|
46
|
-
description:
|
33
|
+
description: Sharding and replication support for ActiveRecord 2.x
|
47
34
|
email: mperham@gmail.com
|
48
35
|
executables: []
|
49
36
|
|
@@ -52,62 +39,10 @@ extensions: []
|
|
52
39
|
extra_rdoc_files:
|
53
40
|
- README.rdoc
|
54
41
|
files:
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
- example/Rakefile
|
60
|
-
- example/app/controllers/accounts_controller.rb
|
61
|
-
- example/app/controllers/application.rb
|
62
|
-
- example/app/controllers/figments_controller.rb
|
63
|
-
- example/app/helpers/accounts_helper.rb
|
64
|
-
- example/app/helpers/application_helper.rb
|
65
|
-
- example/app/helpers/figments_helper.rb
|
66
|
-
- example/app/models/account.rb
|
67
|
-
- example/app/models/figment.rb
|
68
|
-
- example/app/views/accounts/index.html.erb
|
69
|
-
- example/app/views/layouts/application.html.erb
|
70
|
-
- example/config/boot.rb
|
71
|
-
- example/config/database.yml
|
72
|
-
- example/config/environment.rb
|
73
|
-
- example/config/environments/development.rb
|
74
|
-
- example/config/environments/production.rb
|
75
|
-
- example/config/environments/test.rb
|
76
|
-
- example/config/initializers/inflections.rb
|
77
|
-
- example/config/initializers/mime_types.rb
|
78
|
-
- example/config/initializers/new_rails_defaults.rb
|
79
|
-
- example/config/routes.rb
|
80
|
-
- example/db/migrate/20080702154628_create_accounts.rb
|
81
|
-
- example/db/migrate/20080702154820_create_figments.rb
|
82
|
-
- example/db/schema.rb
|
83
|
-
- example/public/404.html
|
84
|
-
- example/public/422.html
|
85
|
-
- example/public/500.html
|
86
|
-
- example/public/dispatch.cgi
|
87
|
-
- example/public/dispatch.fcgi
|
88
|
-
- example/public/dispatch.rb
|
89
|
-
- example/public/favicon.ico
|
90
|
-
- example/public/images/rails.png
|
91
|
-
- example/public/robots.txt
|
92
|
-
- example/script/about
|
93
|
-
- example/script/console
|
94
|
-
- example/script/dbconsole
|
95
|
-
- example/script/destroy
|
96
|
-
- example/script/generate
|
97
|
-
- example/script/performance/benchmarker
|
98
|
-
- example/script/performance/profiler
|
99
|
-
- example/script/performance/request
|
100
|
-
- example/script/plugin
|
101
|
-
- example/script/process/inspector
|
102
|
-
- example/script/process/reaper
|
103
|
-
- example/script/process/spawner
|
104
|
-
- example/script/runner
|
105
|
-
- example/script/server
|
106
|
-
- example/test/fixtures/accounts.yml
|
107
|
-
- example/test/functional/accounts_controller_test.rb
|
108
|
-
- example/test/integration/account_figments_test.rb
|
109
|
-
- example/test/test_helper.rb
|
110
|
-
- example23/Rakefile
|
42
|
+
- lib/data_fabric/connection_proxy.rb
|
43
|
+
- lib/data_fabric/extensions.rb
|
44
|
+
- lib/data_fabric/version.rb
|
45
|
+
- lib/data_fabric.rb
|
111
46
|
- example23/app/controllers/accounts_controller.rb
|
112
47
|
- example23/app/controllers/application_controller.rb
|
113
48
|
- example23/app/controllers/figments_controller.rb
|
@@ -127,17 +62,8 @@ files:
|
|
127
62
|
- example23/config/initializers/new_rails_defaults.rb
|
128
63
|
- example23/config/locales/en.yml
|
129
64
|
- example23/config/routes.rb
|
130
|
-
- example23/db/development.sqlite3
|
131
65
|
- example23/db/migrate/20080702154628_create_accounts.rb
|
132
66
|
- example23/db/migrate/20080702154820_create_figments.rb
|
133
|
-
- example23/db/s0_development.sqlite3
|
134
|
-
- example23/db/s0_test.sqlite3
|
135
|
-
- example23/db/s1_development.sqlite3
|
136
|
-
- example23/db/s1_test.sqlite3
|
137
|
-
- example23/db/schema.rb
|
138
|
-
- example23/db/test.sqlite3
|
139
|
-
- example23/log/development.log
|
140
|
-
- example23/log/test.log
|
141
67
|
- example23/public/404.html
|
142
68
|
- example23/public/422.html
|
143
69
|
- example23/public/500.html
|
@@ -148,6 +74,7 @@ files:
|
|
148
74
|
- example23/public/images/rails.png
|
149
75
|
- example23/public/index.html
|
150
76
|
- example23/public/robots.txt
|
77
|
+
- example23/Rakefile
|
151
78
|
- example23/script/about
|
152
79
|
- example23/script/console
|
153
80
|
- example23/script/dbconsole
|
@@ -167,19 +94,55 @@ files:
|
|
167
94
|
- example23/test/integration/account_figments_test.rb
|
168
95
|
- example23/test/performance/browsing_test.rb
|
169
96
|
- example23/test/test_helper.rb
|
170
|
-
-
|
171
|
-
-
|
172
|
-
-
|
173
|
-
-
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
177
|
-
-
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
97
|
+
- example30/app/controllers/accounts_controller.rb
|
98
|
+
- example30/app/controllers/application_controller.rb
|
99
|
+
- example30/app/controllers/figments_controller.rb
|
100
|
+
- example30/app/helpers/application_helper.rb
|
101
|
+
- example30/app/models/account.rb
|
102
|
+
- example30/app/models/figment.rb
|
103
|
+
- example30/app/views/accounts/index.html.erb
|
104
|
+
- example30/app/views/layouts/application.html.erb
|
105
|
+
- example30/config/application.rb
|
106
|
+
- example30/config/boot.rb
|
107
|
+
- example30/config/database.yml
|
108
|
+
- example30/config/environment.rb
|
109
|
+
- example30/config/environments/development.rb
|
110
|
+
- example30/config/environments/production.rb
|
111
|
+
- example30/config/environments/test.rb
|
112
|
+
- example30/config/initializers/backtrace_silencers.rb
|
113
|
+
- example30/config/initializers/inflections.rb
|
114
|
+
- example30/config/initializers/mime_types.rb
|
115
|
+
- example30/config/initializers/secret_token.rb
|
116
|
+
- example30/config/initializers/session_store.rb
|
117
|
+
- example30/config/locales/en.yml
|
118
|
+
- example30/config/routes.rb
|
119
|
+
- example30/config.ru
|
120
|
+
- example30/db/development.sqlite3
|
121
|
+
- example30/db/migrate/20080702154628_create_accounts.rb
|
122
|
+
- example30/db/migrate/20080702154820_create_figments.rb
|
123
|
+
- example30/db/s0_development.sqlite3
|
124
|
+
- example30/db/s0_test.sqlite3
|
125
|
+
- example30/db/s1_development.sqlite3
|
126
|
+
- example30/db/s1_test.sqlite3
|
127
|
+
- example30/db/schema.rb
|
128
|
+
- example30/db/seeds.rb
|
129
|
+
- example30/db/test.sqlite3
|
130
|
+
- example30/Gemfile
|
131
|
+
- example30/Gemfile.lock
|
132
|
+
- example30/log/development.log
|
133
|
+
- example30/log/test.log
|
134
|
+
- example30/Rakefile
|
135
|
+
- example30/README
|
136
|
+
- example30/script/rails
|
137
|
+
- example30/test/fixtures/accounts.yml
|
138
|
+
- example30/test/functional/accounts_controller_test.rb
|
139
|
+
- example30/test/integration/account_figments_test.rb
|
140
|
+
- example30/test/performance/browsing_test.rb
|
141
|
+
- example30/test/test_helper.rb
|
142
|
+
- CHANGELOG
|
143
|
+
- README.rdoc
|
144
|
+
- Rakefile
|
145
|
+
- TESTING.rdoc
|
183
146
|
- test/connection_test.rb
|
184
147
|
- test/database.yml
|
185
148
|
- test/database.yml.mysql
|
@@ -187,13 +150,17 @@ files:
|
|
187
150
|
- test/shard_test.rb
|
188
151
|
- test/test_helper.rb
|
189
152
|
- test/thread_test.rb
|
153
|
+
- test/vr_austin_master.db
|
154
|
+
- test/vr_austin_slave.db
|
155
|
+
- test/vr_dallas_master.db
|
156
|
+
- test/vr_dallas_slave.db
|
190
157
|
has_rdoc: true
|
191
158
|
homepage: http://github.com/mperham/data_fabric
|
192
159
|
licenses: []
|
193
160
|
|
194
161
|
post_install_message:
|
195
|
-
rdoc_options:
|
196
|
-
|
162
|
+
rdoc_options: []
|
163
|
+
|
197
164
|
require_paths:
|
198
165
|
- lib
|
199
166
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -221,7 +188,13 @@ specification_version: 3
|
|
221
188
|
summary: Sharding and replication support for ActiveRecord 2.x
|
222
189
|
test_files:
|
223
190
|
- test/connection_test.rb
|
191
|
+
- test/database.yml
|
192
|
+
- test/database.yml.mysql
|
224
193
|
- test/database_test.rb
|
225
194
|
- test/shard_test.rb
|
226
195
|
- test/test_helper.rb
|
227
196
|
- test/thread_test.rb
|
197
|
+
- test/vr_austin_master.db
|
198
|
+
- test/vr_austin_slave.db
|
199
|
+
- test/vr_dallas_master.db
|
200
|
+
- test/vr_dallas_slave.db
|