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