rad_core 0.2.6 → 0.2.7

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.
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