Created
August 5, 2011 21:42
-
-
Save nickh/1128589 to your computer and use it in GitHub Desktop.
Moar dynashard class generation fun
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/lib/dynashard.rb b/lib/dynashard.rb | |
| index 9cdf095..e6ac9ac 100644 | |
| --- a/lib/dynashard.rb | |
| +++ b/lib/dynashard.rb | |
| @@ -264,15 +264,10 @@ module Dynashard | |
| # Return a model subclass configured to use a specific shard | |
| def self.sharded_model_class(shard_klass, base_klass) | |
| - subclass_name = base_klass.dynashard_subclass_name | |
| - class_name = "#{shard_klass.name}::#{subclass_name}" | |
| - unless shard_klass.constants.include?(subclass_name.to_sym) | |
| - class_eval <<-EOE, __FILE__, __LINE__ | |
| - class #{class_name} < #{base_klass.name} | |
| - include Dynashard::GeneratedModelClass | |
| - end | |
| -EOE | |
| - klass = class_name.constantize | |
| + subclass = base_klass.dynashard_subclass_name.to_sym | |
| + unless shard_klass.constants.include?(subclass) | |
| + klass = shard_klass.const_set(subclass, Class.new(base_klass)) | |
| + klass.send(:include, Dynashard::GeneratedModelClass) | |
| klass.dynashard_klass = shard_klass | |
| klass.connection_handler.dynashard_pool_alias(klass.name, shard_klass.name) | |
| if sharded_table_name = base_klass.dynashard_table_name | |
| @@ -296,7 +291,7 @@ EOE | |
| end | |
| end | |
| end | |
| - class_name.constantize | |
| + shard_klass.const_get(subclass) | |
| end | |
| def self.shard_constants |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment