module-cluster 1.4.5 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,12 +1,13 @@
1
1
 
2
2
  module ::ModuleCluster::CascadeFeatures::PerformCascades
3
3
 
4
+ $this_time = 0
4
5
  ######################
5
6
  # perform_cascades #
6
7
  ######################
7
8
 
8
9
  def perform_cascades( module_self, action, hooked_instance, set_stack )
9
-
10
+
10
11
  # This method is called when a ::ModuleCluster module is included or extended.
11
12
  # It determines what modules should be included/extended and which should cascade.
12
13
 
@@ -130,15 +131,20 @@ module ::ModuleCluster::CascadeFeatures::PerformCascades
130
131
 
131
132
  def cascade_block_into_hooked_instance( module_self, hooked_instance, set )
132
133
 
133
- # if we are supposed to cascade we need to extend with the ::ModuleCluster dependency module
134
- hooked_instance.extend( set.dependency_module )
134
+ # subclasses already cascade due to #inherited behavior
135
+ unless hooked_instance.is_a?( Class )
135
136
 
136
- # and we call the set's definition method to cascade
137
- hooked_instance.__send__( set.method, & set.runtime_block )
137
+ # if we are supposed to cascade we need to extend with the ::ModuleCluster dependency module
138
+ hooked_instance.extend( set.dependency_module )
138
139
 
139
- existing_inherit_hooks = module_self.cluster_stack.inherited_hooks
140
- hooked_instance.cluster_stack.inherited_hooks.concat( existing_inherit_hooks )
140
+ # and we call the set's definition method to cascade
141
+ hooked_instance.__send__( set.method, & set.runtime_block )
141
142
 
143
+ existing_inherit_hooks = module_self.cluster_stack.inherited_hooks
144
+ hooked_instance.cluster_stack.inherited_hooks.concat( existing_inherit_hooks )
145
+
146
+ end
147
+
142
148
  end
143
149
 
144
150
  #######################################
@@ -7,17 +7,16 @@ module ::ModuleCluster::CascadeFeatures::Subclass
7
7
 
8
8
  def inherited( hooked_instance )
9
9
 
10
- # all future subclasses should receive cascading hook
11
- hooked_instance.extend( ::ModuleCluster::CascadeFeatures::Subclass )
12
- hooked_instance.cluster_stack.inherited_hooks.concat( cluster_stack.inherited_hooks )
13
-
14
10
  ::ModuleCluster::CascadeFeatures.perform_cascades( self,
15
- :inherited,
16
- hooked_instance,
17
- cluster_stack.inherited_hooks )
11
+ :inherited,
12
+ hooked_instance,
13
+ cluster_stack.inherited_hooks )
14
+
15
+ # we don't call super because we don't want to run our inherited action multiple times
16
+ # that means if you are messing with #inherited on your own (whoever is reading this code)
17
+ # then you need to consider the order your #inherited will be inserted in relation to
18
+ # the one provided by module-cluster
18
19
 
19
- super
20
-
21
20
  end
22
21
 
23
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: module-cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.4.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-10 00:00:00.000000000 Z
12
+ date: 2012-03-12 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'Provides methods for clustering modules so that when the main module
15
15
  is included other modules are also included or extended, either before or after