rad_core 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/Rakefile +2 -2
  2. data/bin/rad +20 -25
  3. data/lib/components/config.rb +1 -1
  4. data/lib/components/configurators.rb +2 -2
  5. data/lib/components/controller.rb +2 -2
  6. data/lib/components/conveyors.rb +2 -2
  7. data/lib/components/environment.rb +1 -1
  8. data/lib/components/environment.yml +28 -28
  9. data/lib/components/flash.rb +1 -1
  10. data/lib/components/html.rb +1 -1
  11. data/lib/components/http.rb +1 -1
  12. data/lib/components/http.yml +1 -1
  13. data/lib/components/logger.rb +2 -2
  14. data/lib/components/mailer.rb +2 -2
  15. data/lib/components/remote.rb +1 -1
  16. data/lib/components/router.rb +3 -3
  17. data/lib/components/template.rb +2 -2
  18. data/lib/components/web.rb +3 -3
  19. data/lib/rad.rb +1 -1
  20. data/lib/rad/_support/active_support.rb +7 -7
  21. data/lib/rad/_support/active_support/locales/ru/actionview.yml +8 -8
  22. data/lib/rad/_support/active_support/locales/ru/activesupport.yml +4 -4
  23. data/lib/rad/_support/active_support/locales/ru/datetime.yml +5 -5
  24. data/lib/rad/_support/active_support/time.rb +2 -2
  25. data/lib/rad/_support/addressable.rb +6 -6
  26. data/lib/rad/_support/class_loader.rb +1 -1
  27. data/lib/rad/_support/extensions.rb +5 -5
  28. data/lib/rad/_support/filters.rb +13 -13
  29. data/lib/rad/_support/hacks_and_fixes.rb +5 -5
  30. data/lib/rad/_support/mime.rb +4 -4
  31. data/lib/rad/_support/module.rb +11 -11
  32. data/lib/rad/_support/require.rb +5 -5
  33. data/lib/rad/_support/rson.rb +4 -4
  34. data/lib/rad/_support/string.rb +9 -9
  35. data/lib/rad/cli/helper.rb +5 -5
  36. data/lib/rad/configurators/_require.rb +2 -2
  37. data/lib/rad/configurators/abstract.rb +5 -5
  38. data/lib/rad/configurators/web.rb +8 -8
  39. data/lib/rad/controller/_abstract.rb +15 -14
  40. data/lib/rad/controller/_abstract/miscellaneous.rb +5 -5
  41. data/lib/rad/controller/_abstract/render.rb +40 -40
  42. data/lib/rad/controller/_abstract/responder.rb +1 -1
  43. data/lib/rad/controller/_context.rb +1 -1
  44. data/lib/rad/controller/_http.rb +11 -11
  45. data/lib/rad/controller/_require.rb +6 -6
  46. data/lib/rad/controller/processors/controller_caller.rb +3 -3
  47. data/lib/rad/controller/processors/controller_error_handling.rb +14 -14
  48. data/lib/rad/controller/processors/controller_logger.rb +1 -1
  49. data/lib/rad/conveyors/_conveyor.rb +9 -9
  50. data/lib/rad/conveyors/_conveyors.rb +4 -4
  51. data/lib/rad/conveyors/_params.rb +5 -5
  52. data/lib/rad/conveyors/_processor.rb +2 -2
  53. data/lib/rad/conveyors/_workspace.rb +5 -5
  54. data/lib/rad/conveyors/processors/conveyor_logger.rb +3 -3
  55. data/lib/rad/environment/_config.rb +4 -4
  56. data/lib/rad/environment/_environment.rb +10 -10
  57. data/lib/rad/environment/_files_helper.rb +5 -5
  58. data/lib/rad/environment/_logger.rb +9 -9
  59. data/lib/rad/environment/_require.rb +4 -4
  60. data/lib/rad/gems.rb +14 -14
  61. data/lib/rad/html/_flash.rb +5 -5
  62. data/lib/rad/html/_helpers/basic_html_helper.rb +12 -12
  63. data/lib/rad/html/_helpers/form_helper.rb +19 -19
  64. data/lib/rad/html/_helpers/javascript_helper.rb +6 -6
  65. data/lib/rad/html/_helpers/model_helper.rb +17 -17
  66. data/lib/rad/html/_require.rb +1 -1
  67. data/lib/rad/html/processors/prepare_flash.rb +3 -3
  68. data/lib/rad/html/processors/scoped_params.rb +4 -4
  69. data/lib/rad/http/_http.rb +4 -4
  70. data/lib/rad/http/_http_adapter.rb +5 -5
  71. data/lib/rad/http/_request.rb +11 -11
  72. data/lib/rad/http/_require.rb +8 -8
  73. data/lib/rad/http/_response.rb +5 -5
  74. data/lib/rad/http/_support/rack/fixes.rb +3 -3
  75. data/lib/rad/http/_support/rack/rack_adapter.rb +5 -5
  76. data/lib/rad/http/processors/evaluate_format.rb +4 -4
  77. data/lib/rad/http/processors/http_logger.rb +3 -3
  78. data/lib/rad/http/processors/http_writer.rb +7 -7
  79. data/lib/rad/http/processors/prepare_params.rb +5 -5
  80. data/lib/rad/mailer/_letter.rb +1 -1
  81. data/lib/rad/mailer/_mailer.rb +1 -1
  82. data/lib/rad/mailer/_mailer_controller.rb +6 -6
  83. data/lib/rad/mailer/_require.rb +1 -1
  84. data/lib/rad/mailer/processors/letter_builder.rb +6 -6
  85. data/lib/rad/profiles/mailer.rb +2 -2
  86. data/lib/rad/profiles/web.rb +13 -13
  87. data/lib/rad/remote/processors/remote_caller.rb +10 -10
  88. data/lib/rad/remote/processors/remote_logger.rb +1 -1
  89. data/lib/rad/router/_abstract_router.rb +9 -9
  90. data/lib/rad/router/_alias_router.rb +34 -34
  91. data/lib/rad/router/_basic_router.rb +12 -12
  92. data/lib/rad/router/_configurator.rb +6 -6
  93. data/lib/rad/router/_core_routing_helper.rb +4 -4
  94. data/lib/rad/router/_object_router.rb +45 -45
  95. data/lib/rad/router/_require.rb +8 -8
  96. data/lib/rad/router/_restful_router.rb +25 -25
  97. data/lib/rad/router/_router.rb +78 -78
  98. data/lib/rad/router/_simple_router.rb +5 -5
  99. data/lib/rad/router/processors/router.rb +6 -6
  100. data/lib/rad/spec/controller.rb +9 -9
  101. data/lib/rad/spec/environment.rb +7 -7
  102. data/lib/rad/spec/http.rb +2 -2
  103. data/lib/rad/spec/http_controller.rb +22 -22
  104. data/lib/rad/spec/mailer.rb +4 -4
  105. data/lib/rad/spec/remote.rb +1 -1
  106. data/lib/rad/spec/router.rb +4 -4
  107. data/lib/rad/spec/template.rb +2 -2
  108. data/lib/rad/tasks.rb +2 -2
  109. data/lib/rad/template/_context.rb +15 -15
  110. data/lib/rad/template/_relative_path_resolver.rb +1 -1
  111. data/lib/rad/template/_support/tilt.rb +17 -17
  112. data/lib/rad/template/_support/tilt_fixes.rb +3 -3
  113. data/lib/rad/template/_template.rb +47 -47
  114. data/lib/rad/web/_ajax_helper.rb +4 -4
  115. data/lib/rad/web/_controller_miscellaneous_helper.rb +5 -5
  116. data/lib/rad/web/_ensure_no_www.rb +5 -5
  117. data/lib/rad/web/_protect_from_forgery.rb +18 -18
  118. data/lib/rad/web/_require.rb +7 -7
  119. data/lib/rad/web/_router/abstract_routing_helper.rb +4 -4
  120. data/lib/rad/web/_router/controller_routing_helper.rb +15 -15
  121. data/lib/rad/web/_router/view_routing_helper.rb +12 -12
  122. data/readme.md +5 -5
  123. data/spec/controller/abstract_spec.rb +29 -29
  124. data/spec/controller/context_spec.rb +32 -32
  125. data/spec/controller/error_handling_spec.rb +31 -31
  126. data/spec/controller/helper_spec.rb +13 -13
  127. data/spec/controller/http_spec.rb +32 -32
  128. data/spec/controller/render_spec.rb +59 -59
  129. data/spec/conveyors/conveyors_spec.rb +32 -32
  130. data/spec/environment/config_spec.rb +6 -6
  131. data/spec/environment/environment_spec.rb +7 -7
  132. data/spec/environment/minimal_app_spec.rb +4 -4
  133. data/spec/environment/standard_app_spec.rb +10 -10
  134. data/spec/html/basic_html_helper_spec.rb +6 -6
  135. data/spec/html/form_helper_spec.rb +5 -5
  136. data/spec/html/javascript_helper_spec.rb +4 -4
  137. data/spec/html/model_helper_spec.rb +12 -12
  138. data/spec/html/scoped_params_spec.rb +2 -2
  139. data/spec/html/spec_helper.rb +3 -3
  140. data/spec/http/http_spec.rb +9 -9
  141. data/spec/http/miscellaneous_spec.rb +2 -2
  142. data/spec/mailer/mail_controller_spec.rb +23 -23
  143. data/spec/remote/remote_spec.rb +26 -26
  144. data/spec/router/alias_router_spec.rb +22 -22
  145. data/spec/router/basic_router_spec.rb +8 -8
  146. data/spec/router/configurator_spec.rb +4 -4
  147. data/spec/router/integration_spec.rb +17 -17
  148. data/spec/router/object_router_spec.rb +47 -47
  149. data/spec/router/persistent_params_spec.rb +18 -18
  150. data/spec/router/restful_router_spec.rb +39 -39
  151. data/spec/router/router_spec.rb +37 -37
  152. data/spec/router/routing_helper_spec.rb +18 -18
  153. data/spec/support/filters_spec.rb +11 -13
  154. data/spec/template/template_spec.rb +43 -45
  155. data/spec/template/template_spec/views/layout/content_for/content.erb +3 -1
  156. data/spec/template/template_spec/views/layout/content_for/layout.erb +1 -1
  157. data/spec/template/tilt_spec.rb +24 -24
  158. data/spec/web/basic_spec.rb +25 -25
  159. data/spec/web/controller_routing_helper_spec.rb +26 -26
  160. data/spec/web/flash_spec.rb +31 -31
  161. data/spec/web/protect_from_forgery_spec.rb +44 -44
  162. data/spec/web/spec_helper_spec.rb +16 -16
  163. data/spec/web/view_routing_helper_spec.rb +31 -31
  164. metadata +46 -49
  165. data/lib/rad/_support/callbacks.rb +0 -166
  166. data/lib/rad/_support/ruby_ext_with_active_support.rb +0 -4
  167. data/spec/support/callbacks_spec.rb +0 -157
@@ -1,41 +1,41 @@
1
1
  class Rad::Router
2
2
  inject workspace: :workspace
3
-
3
+
4
4
  attr_reader :routers, :format_processor
5
5
  attr_accessor :default_path, :default_method
6
6
 
7
7
  def initialize (
8
- class_variable = :class,
9
- routers = [[:default_router, Rad::Router::SimpleRouter.new]],
8
+ class_variable = :class,
9
+ routers = [[:default_router, Rad::Router::SimpleRouter.new]],
10
10
  format_processor = Rad::Router::DefaultFormatProcessor.new
11
11
  )
12
- @class_variable, @format_processor = class_variable, format_processor
12
+ @class_variable, @format_processor = class_variable, format_processor
13
13
  self.routers = routers
14
- end
15
-
14
+ end
15
+
16
16
  def routers= routers
17
17
  @routers = {}
18
- routers.each do |k, v|
18
+ routers.each do |k, v|
19
19
  k.must_be.present
20
- v.must_be.present
20
+ v.must_be.present
21
21
  v.must.respond_to(:decode)
22
22
  v.must.respond_to(:encode)
23
-
23
+
24
24
  self.routers[k] = v
25
25
  end
26
26
  end
27
-
28
- def url_for *args
27
+
28
+ def url_for *args
29
29
  if args.first.is_a?(Class)
30
30
  args.size.must_be.in 2..3
31
31
  klass, method, options = args
32
- url_for_class(klass, method, (options || {}))
32
+ url_for_class(klass, method, (options || {}))
33
33
  else
34
34
  first = args.first.to_s
35
35
  if first =~ /^\//
36
36
  args.size.must_be.in 1..2
37
37
  path, options = args
38
- url_for_path(path, (options || {}))
38
+ url_for_path(path, (options || {}))
39
39
  # elsif full_url? first
40
40
  # args.size.must == 1
41
41
  # return first
@@ -53,80 +53,80 @@ class Rad::Router
53
53
 
54
54
  def decode path, params
55
55
  path.first.must == '/'
56
- # params = params.to_openobject
57
-
56
+ # params = params.to_openobject
57
+
58
58
  path, format = format_processor.remove_format path if format_processor
59
-
59
+
60
60
  result = nil
61
- routers.each do |name, route|
61
+ routers.each do |name, route|
62
62
  result = route.decode path, params
63
- break if result
63
+ break if result
64
64
  end
65
65
 
66
66
  raise "no route for '#{safe_workspace.path}' request!" unless result
67
-
67
+
68
68
  klass, method, params = result
69
- method ||= default_method
69
+ method ||= default_method
70
70
  params.must_be.defined
71
71
  method.must_be.a Symbol
72
-
72
+
73
73
  raise "invalid route! No method '#{method}' for #{klass}!" unless klass.instance_methods.include? method
74
74
  raise "invalid route! You try to call protected method '#{method}' for '#{path}'!" unless klass.public_instance_methods.include? method
75
75
 
76
76
  return klass, method, params
77
77
  end
78
-
78
+
79
79
  def encode klass, method, params = {}
80
80
  klass.must_be.defined
81
81
  method.must_be.a Symbol
82
82
  params = params.clone
83
83
  # method, params = method, params.to_openobject
84
-
84
+
85
85
  format = params.delete(:format)
86
-
86
+
87
87
  # raise "Invalid route! No method '#{method}' for #{klass}!" unless klass.method_defined? method
88
88
  # raise "Invalid route! You try to call protected method '#{method}' for '#{klass}'!" unless klass.method_defined? method
89
-
89
+
90
90
  inject_persistent_params! params
91
-
91
+
92
92
  result = nil
93
- routers.each do |name, route|
93
+ routers.each do |name, route|
94
94
  result = route.encode klass, method, params
95
95
  break if result
96
96
  end
97
-
97
+
98
98
  raise "no route for '#{klass}.#{method}'!" unless result
99
-
99
+
100
100
  path, params = result
101
101
  path.must_be.defined
102
102
  params.must_be.defined
103
-
103
+
104
104
  path = format_processor.add_format path, format if format_processor and format
105
105
 
106
106
  return path, params
107
107
  end
108
-
108
+
109
109
  def encode_method route_method, has_id
110
110
  # method = method
111
- route_method.must_be.present
112
-
111
+ route_method.must_be.present
112
+
113
113
  result = nil
114
- routers.each do |name, route|
114
+ routers.each do |name, route|
115
115
  result = route.respond_to :encode_method, route_method, has_id
116
116
  break if result
117
117
  end
118
118
 
119
119
  raise "no route for '#{route_method}' route method!" unless result
120
-
120
+
121
121
  klass, method = result
122
122
  klass.must_be.defined
123
123
  method.must_be.defined
124
124
  method.must =~ /^[_a-zA-Z0-9]+$/
125
-
125
+
126
126
  return [klass, method]
127
127
  end
128
128
  cache_method_with_params_in_production :encode_method
129
-
129
+
130
130
  def persist_params &block
131
131
  if block
132
132
  before = safe_workspace.persist_params?
@@ -154,90 +154,90 @@ class Rad::Router
154
154
  safe_workspace.delete :persist_params
155
155
  end
156
156
  end
157
-
157
+
158
158
  def persist_params?
159
159
  safe_workspace.persist_params?
160
160
  end
161
-
161
+
162
162
  def persistent_params; @persistent_params ||= [] end
163
-
163
+
164
164
  def url_for_path path, params
165
165
  # if full_url? path
166
166
  # params.must_be.blank
167
167
  # return path
168
168
  # end
169
-
169
+
170
170
  # params = params.to_openobject
171
-
172
-
171
+
172
+
173
173
  # url_root = params.include?(:url_root) ? params.delete(:url_root) : config.url_root!
174
174
  # if !url_root or url_root == '/'
175
175
  # url = path.clone
176
176
  # else
177
177
  # url = url_root + path
178
178
  # end
179
-
179
+
180
180
  # url_root
181
181
  url_root = params.delete(:url_root)
182
182
  url = (url_root && url_root != '/') ? url_root + path : path.clone
183
183
 
184
184
  # host port
185
185
  host, port = params.delete(:host), params.delete(:port)
186
- format = params.delete(:format)
187
-
186
+ format = params.delete(:format)
187
+
188
188
  # json
189
189
  params = {json: params.to_json} if params.delete :as_json #and !params.empty?
190
-
190
+
191
191
  # format
192
192
  if format
193
193
  params[:format] = format
194
194
  url.marks.format = format.to_s
195
195
  end
196
-
196
+
197
197
  # Delete 'nil' parameters
198
198
  to_delete = []
199
199
  params.each{|k, v| to_delete << k if v.nil?}
200
200
  to_delete.each{|k| params.delete k}
201
-
201
+
202
202
  # build url
203
203
  delimiter = path.include?('?') ? '&' : '?'
204
204
  url << "#{delimiter}#{params.to_query}" unless params.empty?
205
-
205
+
206
206
  if host.blank?
207
207
  url
208
208
  else
209
209
  %{http://#{host}#{":#{port}" unless port.blank?}#{url}}
210
210
  end
211
211
  end
212
-
212
+
213
213
  def url_for_class klass, method, params
214
214
  klass ||= current_class
215
215
  # params = params.to_openobject
216
-
216
+
217
217
  # special params
218
218
  format = params[:format]
219
-
219
+
220
220
  path, params = encode klass, method, params
221
- url = url_for_path path, params
221
+ url = url_for_path path, params
222
222
 
223
223
  url.marks.format = format.to_s if format
224
224
 
225
225
  url
226
226
  end
227
-
228
-
229
- #
227
+
228
+
229
+ #
230
230
  # public helpers for :router component
231
- #
231
+ #
232
232
  delegate :configure, to: Rad::Router::Configurator
233
-
233
+
234
234
  protected
235
235
  # def full_url? url
236
236
  # url =~ /[a-z0-9]+:\/\//
237
237
  # end
238
-
239
- # sometimes we need access to routers outside of conveyor :cycle,
240
- # for example in spec routing helpers, in that case we just ignore workspace and it's variables
238
+
239
+ # sometimes we need access to routers outside of conveyor :cycle,
240
+ # for example in spec routing helpers, in that case we just ignore workspace and its variables
241
241
  def safe_workspace
242
242
  if rad.active? :cycle
243
243
  workspace
@@ -245,50 +245,50 @@ class Rad::Router
245
245
  Rad::Conveyors::Workspace.new
246
246
  end
247
247
  end
248
-
249
- def current_class; safe_workspace[@class_variable] end
250
-
248
+
249
+ def current_class; safe_workspace[@class_variable] end
250
+
251
251
  DONOT_PERSIST = [:_, :_method, :_target]
252
-
252
+
253
253
  def inject_persistent_params! params
254
254
  persist = params.delete(:persist)
255
-
255
+
256
256
  # global persistent params
257
257
  unless cached_global_persistend_params = safe_workspace.cached_global_persistend_params
258
258
  cached_global_persistend_params, workspace_params = {}, safe_workspace.params
259
259
  if workspace_params
260
260
  persistent_params.collect!{|k| k}
261
-
262
- workspace_params.each do |k, v|
261
+
262
+ workspace_params.each do |k, v|
263
263
  cached_global_persistend_params[k] = v if persistent_params.include?(k)
264
264
  end
265
-
265
+
266
266
  safe_workspace.cached_global_persistend_params = cached_global_persistend_params
267
267
  end
268
268
  end
269
-
269
+
270
270
  cached_global_persistend_params.each do |k, v|
271
271
  params[k] = v unless params.include? k
272
272
  end
273
-
273
+
274
274
  # underscored persistent params
275
275
  if persist_params?
276
- unless cached_persistend_params = safe_workspace.cached_persistend_params
276
+ unless cached_persistend_params = safe_workspace.cached_persistend_params
277
277
  cached_persistend_params, workspace_params = {}, safe_workspace.params
278
-
278
+
279
279
  if workspace_params
280
280
  workspace_params.each do |k, v|
281
281
  cached_persistend_params[k] = v if (k =~ /^_/) and !DONOT_PERSIST.include?(k)
282
282
  end
283
-
283
+
284
284
  safe_workspace.cached_persistend_params = cached_persistend_params
285
285
  end
286
286
  end
287
-
287
+
288
288
  cached_persistend_params.each do |k, v|
289
289
  params[k] = v unless params.include? k
290
290
  end
291
- end
291
+ end
292
292
  end
293
-
293
+
294
294
  end
@@ -1,8 +1,8 @@
1
- class Rad::Router::SimpleRouter
1
+ class Rad::Router::SimpleRouter
2
2
  inject logger: :logger
3
3
 
4
4
  def encode klass, method, params
5
- path = "/#{klass.name.underscore}/#{method}"
5
+ path = "/#{klass.name.underscore}/#{method}"
6
6
  return path, params
7
7
  end
8
8
 
@@ -10,11 +10,11 @@ class Rad::Router::SimpleRouter
10
10
  parts = path[1..-1].split '/'
11
11
  if parts.size >= 2
12
12
  method = parts.pop.to_sym
13
-
13
+
14
14
  class_path = parts.join('/')
15
- class_name = class_path.camelize
15
+ class_name = class_path.camelize
16
16
  klass = class_name.constantize
17
-
17
+
18
18
  return klass, method, params
19
19
  end
20
20
  end
@@ -2,22 +2,22 @@ rad.router
2
2
 
3
3
  class Router < Rad::Conveyors::Processor
4
4
  inject router: :router
5
-
5
+
6
6
  def initialize next_processor, class_variable = :class, method_variable = :method
7
7
  super(next_processor)
8
8
  @class_variable, @method_variable = class_variable, method_variable
9
9
  end
10
-
10
+
11
11
  def call
12
12
  halt = catch :halt do
13
- if workspace[@class_variable].blank? or workspace[@method_variable].blank?
14
- klass, method, params = router.decode workspace.path, workspace.params
13
+ if workspace[@class_variable].blank? or workspace[@method_variable].blank?
14
+ klass, method, params = router.decode workspace.path, workspace.params
15
15
  workspace[@class_variable], workspace[@method_variable], workspace.params = klass, method, params
16
16
  end
17
-
17
+
18
18
  nil
19
19
  end
20
-
20
+
21
21
  next_processor.call unless halt
22
22
  end
23
23
  end
@@ -6,35 +6,35 @@ end
6
6
 
7
7
  rspec do
8
8
  attr_accessor :response, :workspace
9
-
9
+
10
10
  def ccall klass, method, params = {}, workspace_variables = {}, &block
11
11
  self.response = Rad::Http::Response.new
12
12
  workspace_variables = {
13
13
  class: klass, method_name: method, params: Rad::Conveyors::Params.new(params), response: response
14
14
  }.merge(workspace_variables)
15
-
16
- if block
15
+
16
+ if block
17
17
  rad.conveyors.web.call workspace_variables do |c|
18
18
  self.workspace = rad.workspace
19
-
19
+
20
20
  block.call c
21
21
  end
22
- else
22
+ else
23
23
  self.workspace = rad.conveyors.web.call workspace_variables
24
24
  end
25
-
25
+
26
26
  if klass and klass.name =~ /Http/
27
27
  response.content_type.must_be.present
28
28
  response.status.must_be.present
29
29
  end
30
-
30
+
31
31
  workspace.content
32
32
  end
33
-
33
+
34
34
  def self.with_abstract_controller
35
35
  before do
36
36
  rad.controller
37
-
37
+
38
38
  rad.conveyors.web do |web|
39
39
  web.use Rad::Controller::Processors::ControllerCaller
40
40
  end
@@ -9,27 +9,27 @@ rspec do
9
9
  def self.isolate *args
10
10
  options = args.extract_options!
11
11
  scope = options[:before] || :each
12
- components = args.first.is_a?(Array) ? args.first : args
13
-
12
+ components = args.first.is_a?(Array) ? args.first : args
13
+
14
14
  old = {}
15
15
  before :all do
16
- components.each do |name|
17
- old[name] = rad[name]
16
+ components.each do |name|
17
+ old[name] = rad[name]
18
18
  end
19
19
  end
20
-
20
+
21
21
  before scope do
22
22
  components.each do |name|
23
23
  rad[name] = old[name].deep_clone
24
24
  end
25
25
  end
26
-
26
+
27
27
  after scope do
28
28
  components.each do |name|
29
29
  rad[name] = old[name].deep_clone
30
30
  end
31
31
  end
32
32
  end
33
-
33
+
34
34
  inject environment: :environment, logger: :logger
35
35
  end