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.
- data/Rakefile +2 -2
- data/bin/rad +20 -25
- data/lib/components/config.rb +1 -1
- data/lib/components/configurators.rb +2 -2
- data/lib/components/controller.rb +2 -2
- data/lib/components/conveyors.rb +2 -2
- data/lib/components/environment.rb +1 -1
- data/lib/components/environment.yml +28 -28
- data/lib/components/flash.rb +1 -1
- data/lib/components/html.rb +1 -1
- data/lib/components/http.rb +1 -1
- data/lib/components/http.yml +1 -1
- data/lib/components/logger.rb +2 -2
- data/lib/components/mailer.rb +2 -2
- data/lib/components/remote.rb +1 -1
- data/lib/components/router.rb +3 -3
- data/lib/components/template.rb +2 -2
- data/lib/components/web.rb +3 -3
- data/lib/rad.rb +1 -1
- data/lib/rad/_support/active_support.rb +7 -7
- data/lib/rad/_support/active_support/locales/ru/actionview.yml +8 -8
- data/lib/rad/_support/active_support/locales/ru/activesupport.yml +4 -4
- data/lib/rad/_support/active_support/locales/ru/datetime.yml +5 -5
- data/lib/rad/_support/active_support/time.rb +2 -2
- data/lib/rad/_support/addressable.rb +6 -6
- data/lib/rad/_support/class_loader.rb +1 -1
- data/lib/rad/_support/extensions.rb +5 -5
- data/lib/rad/_support/filters.rb +13 -13
- data/lib/rad/_support/hacks_and_fixes.rb +5 -5
- data/lib/rad/_support/mime.rb +4 -4
- data/lib/rad/_support/module.rb +11 -11
- data/lib/rad/_support/require.rb +5 -5
- data/lib/rad/_support/rson.rb +4 -4
- data/lib/rad/_support/string.rb +9 -9
- data/lib/rad/cli/helper.rb +5 -5
- data/lib/rad/configurators/_require.rb +2 -2
- data/lib/rad/configurators/abstract.rb +5 -5
- data/lib/rad/configurators/web.rb +8 -8
- data/lib/rad/controller/_abstract.rb +15 -14
- data/lib/rad/controller/_abstract/miscellaneous.rb +5 -5
- data/lib/rad/controller/_abstract/render.rb +40 -40
- data/lib/rad/controller/_abstract/responder.rb +1 -1
- data/lib/rad/controller/_context.rb +1 -1
- data/lib/rad/controller/_http.rb +11 -11
- data/lib/rad/controller/_require.rb +6 -6
- data/lib/rad/controller/processors/controller_caller.rb +3 -3
- data/lib/rad/controller/processors/controller_error_handling.rb +14 -14
- data/lib/rad/controller/processors/controller_logger.rb +1 -1
- data/lib/rad/conveyors/_conveyor.rb +9 -9
- data/lib/rad/conveyors/_conveyors.rb +4 -4
- data/lib/rad/conveyors/_params.rb +5 -5
- data/lib/rad/conveyors/_processor.rb +2 -2
- data/lib/rad/conveyors/_workspace.rb +5 -5
- data/lib/rad/conveyors/processors/conveyor_logger.rb +3 -3
- data/lib/rad/environment/_config.rb +4 -4
- data/lib/rad/environment/_environment.rb +10 -10
- data/lib/rad/environment/_files_helper.rb +5 -5
- data/lib/rad/environment/_logger.rb +9 -9
- data/lib/rad/environment/_require.rb +4 -4
- data/lib/rad/gems.rb +14 -14
- data/lib/rad/html/_flash.rb +5 -5
- data/lib/rad/html/_helpers/basic_html_helper.rb +12 -12
- data/lib/rad/html/_helpers/form_helper.rb +19 -19
- data/lib/rad/html/_helpers/javascript_helper.rb +6 -6
- data/lib/rad/html/_helpers/model_helper.rb +17 -17
- data/lib/rad/html/_require.rb +1 -1
- data/lib/rad/html/processors/prepare_flash.rb +3 -3
- data/lib/rad/html/processors/scoped_params.rb +4 -4
- data/lib/rad/http/_http.rb +4 -4
- data/lib/rad/http/_http_adapter.rb +5 -5
- data/lib/rad/http/_request.rb +11 -11
- data/lib/rad/http/_require.rb +8 -8
- data/lib/rad/http/_response.rb +5 -5
- data/lib/rad/http/_support/rack/fixes.rb +3 -3
- data/lib/rad/http/_support/rack/rack_adapter.rb +5 -5
- data/lib/rad/http/processors/evaluate_format.rb +4 -4
- data/lib/rad/http/processors/http_logger.rb +3 -3
- data/lib/rad/http/processors/http_writer.rb +7 -7
- data/lib/rad/http/processors/prepare_params.rb +5 -5
- data/lib/rad/mailer/_letter.rb +1 -1
- data/lib/rad/mailer/_mailer.rb +1 -1
- data/lib/rad/mailer/_mailer_controller.rb +6 -6
- data/lib/rad/mailer/_require.rb +1 -1
- data/lib/rad/mailer/processors/letter_builder.rb +6 -6
- data/lib/rad/profiles/mailer.rb +2 -2
- data/lib/rad/profiles/web.rb +13 -13
- data/lib/rad/remote/processors/remote_caller.rb +10 -10
- data/lib/rad/remote/processors/remote_logger.rb +1 -1
- data/lib/rad/router/_abstract_router.rb +9 -9
- data/lib/rad/router/_alias_router.rb +34 -34
- data/lib/rad/router/_basic_router.rb +12 -12
- data/lib/rad/router/_configurator.rb +6 -6
- data/lib/rad/router/_core_routing_helper.rb +4 -4
- data/lib/rad/router/_object_router.rb +45 -45
- data/lib/rad/router/_require.rb +8 -8
- data/lib/rad/router/_restful_router.rb +25 -25
- data/lib/rad/router/_router.rb +78 -78
- data/lib/rad/router/_simple_router.rb +5 -5
- data/lib/rad/router/processors/router.rb +6 -6
- data/lib/rad/spec/controller.rb +9 -9
- data/lib/rad/spec/environment.rb +7 -7
- data/lib/rad/spec/http.rb +2 -2
- data/lib/rad/spec/http_controller.rb +22 -22
- data/lib/rad/spec/mailer.rb +4 -4
- data/lib/rad/spec/remote.rb +1 -1
- data/lib/rad/spec/router.rb +4 -4
- data/lib/rad/spec/template.rb +2 -2
- data/lib/rad/tasks.rb +2 -2
- data/lib/rad/template/_context.rb +15 -15
- data/lib/rad/template/_relative_path_resolver.rb +1 -1
- data/lib/rad/template/_support/tilt.rb +17 -17
- data/lib/rad/template/_support/tilt_fixes.rb +3 -3
- data/lib/rad/template/_template.rb +47 -47
- data/lib/rad/web/_ajax_helper.rb +4 -4
- data/lib/rad/web/_controller_miscellaneous_helper.rb +5 -5
- data/lib/rad/web/_ensure_no_www.rb +5 -5
- data/lib/rad/web/_protect_from_forgery.rb +18 -18
- data/lib/rad/web/_require.rb +7 -7
- data/lib/rad/web/_router/abstract_routing_helper.rb +4 -4
- data/lib/rad/web/_router/controller_routing_helper.rb +15 -15
- data/lib/rad/web/_router/view_routing_helper.rb +12 -12
- data/readme.md +5 -5
- data/spec/controller/abstract_spec.rb +29 -29
- data/spec/controller/context_spec.rb +32 -32
- data/spec/controller/error_handling_spec.rb +31 -31
- data/spec/controller/helper_spec.rb +13 -13
- data/spec/controller/http_spec.rb +32 -32
- data/spec/controller/render_spec.rb +59 -59
- data/spec/conveyors/conveyors_spec.rb +32 -32
- data/spec/environment/config_spec.rb +6 -6
- data/spec/environment/environment_spec.rb +7 -7
- data/spec/environment/minimal_app_spec.rb +4 -4
- data/spec/environment/standard_app_spec.rb +10 -10
- data/spec/html/basic_html_helper_spec.rb +6 -6
- data/spec/html/form_helper_spec.rb +5 -5
- data/spec/html/javascript_helper_spec.rb +4 -4
- data/spec/html/model_helper_spec.rb +12 -12
- data/spec/html/scoped_params_spec.rb +2 -2
- data/spec/html/spec_helper.rb +3 -3
- data/spec/http/http_spec.rb +9 -9
- data/spec/http/miscellaneous_spec.rb +2 -2
- data/spec/mailer/mail_controller_spec.rb +23 -23
- data/spec/remote/remote_spec.rb +26 -26
- data/spec/router/alias_router_spec.rb +22 -22
- data/spec/router/basic_router_spec.rb +8 -8
- data/spec/router/configurator_spec.rb +4 -4
- data/spec/router/integration_spec.rb +17 -17
- data/spec/router/object_router_spec.rb +47 -47
- data/spec/router/persistent_params_spec.rb +18 -18
- data/spec/router/restful_router_spec.rb +39 -39
- data/spec/router/router_spec.rb +37 -37
- data/spec/router/routing_helper_spec.rb +18 -18
- data/spec/support/filters_spec.rb +11 -13
- data/spec/template/template_spec.rb +43 -45
- data/spec/template/template_spec/views/layout/content_for/content.erb +3 -1
- data/spec/template/template_spec/views/layout/content_for/layout.erb +1 -1
- data/spec/template/tilt_spec.rb +24 -24
- data/spec/web/basic_spec.rb +25 -25
- data/spec/web/controller_routing_helper_spec.rb +26 -26
- data/spec/web/flash_spec.rb +31 -31
- data/spec/web/protect_from_forgery_spec.rb +44 -44
- data/spec/web/spec_helper_spec.rb +16 -16
- data/spec/web/view_routing_helper_spec.rb +31 -31
- metadata +46 -49
- data/lib/rad/_support/callbacks.rb +0 -166
- data/lib/rad/_support/ruby_ext_with_active_support.rb +0 -4
- data/spec/support/callbacks_spec.rb +0 -157
data/lib/rad/router/_router.rb
CHANGED
@@ -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
|
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
|
data/lib/rad/spec/controller.rb
CHANGED
@@ -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
|
data/lib/rad/spec/environment.rb
CHANGED
@@ -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
|