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
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
module Rad::Html::JavascriptHelper
|
|
1
|
+
module Rad::Html::JavascriptHelper
|
|
2
2
|
def javascript_include_tag *scripts
|
|
3
3
|
scripts.collect{|script|
|
|
4
4
|
tag :script, '', src: "#{script}", type: "text/javascript"
|
|
5
|
-
}.join("\n")
|
|
5
|
+
}.join("\n")
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def javascript_tag script = nil, options = {}, &block
|
|
@@ -13,15 +13,15 @@ module Rad::Html::JavascriptHelper
|
|
|
13
13
|
html = tag :script, script, {type: "text/javascript"}
|
|
14
14
|
block ? concat(html) : html
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
def call_deferred_js
|
|
18
18
|
javascript_tag 'rad.callDeferred();', defer: false
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# Escape
|
|
22
22
|
def js obj; obj.to_s.js_escape end
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
|
|
24
|
+
|
|
25
25
|
def self.defer; @defer ||= true end
|
|
26
|
-
def self.defer= value; @defer = value end
|
|
26
|
+
def self.defer= value; @defer = value end
|
|
27
27
|
end
|
|
@@ -5,18 +5,18 @@ class Rad::Html::ModelHelper
|
|
|
5
5
|
self.template, self.form_helper, self.model_name, self.model, self.options = template, form_helper, model_name, model, options
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
#
|
|
8
|
+
|
|
9
|
+
#
|
|
10
10
|
# Helpers
|
|
11
|
-
#
|
|
12
|
-
def check_box name, options = {}
|
|
11
|
+
#
|
|
12
|
+
def check_box name, options = {}
|
|
13
13
|
render_attribute name, options do |fname, value, o|
|
|
14
14
|
html = form_helper.hidden_field_tag(fname, '0') + "\n"
|
|
15
15
|
html += form_helper.check_box_tag fname, !!value, o
|
|
16
16
|
html
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
def file_field name, options = {}
|
|
21
21
|
render_attribute name, options do |fname, value, o|
|
|
22
22
|
form_helper.file_field_tag fname, o
|
|
@@ -65,7 +65,7 @@ class Rad::Html::ModelHelper
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def error_messages
|
|
68
|
-
merrors = errors[:base]
|
|
68
|
+
merrors = errors[:base]
|
|
69
69
|
form_helper.error_messages merrors.to_a unless merrors.blank?
|
|
70
70
|
end
|
|
71
71
|
|
|
@@ -79,11 +79,11 @@ class Rad::Html::ModelHelper
|
|
|
79
79
|
name.must_be.a Symbol
|
|
80
80
|
ferrors = errors_for(name)
|
|
81
81
|
|
|
82
|
-
options = insert_human_readable_label name, options
|
|
82
|
+
options = insert_human_readable_label name, options
|
|
83
83
|
|
|
84
84
|
value = value_of name
|
|
85
85
|
field_name = field_name_for name, value
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
if form_helper.respond_to? :field_with_errors
|
|
88
88
|
field_html = block.call field_name, value, options
|
|
89
89
|
unless ferrors.blank?
|
|
@@ -92,7 +92,7 @@ class Rad::Html::ModelHelper
|
|
|
92
92
|
field_html
|
|
93
93
|
end
|
|
94
94
|
else
|
|
95
|
-
options[:errors] = ferrors
|
|
95
|
+
options[:errors] = ferrors
|
|
96
96
|
block.call field_name, value, options
|
|
97
97
|
end
|
|
98
98
|
end
|
|
@@ -101,17 +101,17 @@ class Rad::Html::ModelHelper
|
|
|
101
101
|
unless @errors
|
|
102
102
|
@errors = {}
|
|
103
103
|
(
|
|
104
|
-
(model.respond_to?(:errors) && model.errors) ||
|
|
105
|
-
(model.respond_to?(:[]) && (model['errors'] || model[:errors])) ||
|
|
104
|
+
(model.respond_to?(:errors) && model.errors) ||
|
|
105
|
+
(model.respond_to?(:[]) && (model['errors'] || model[:errors])) ||
|
|
106
106
|
{}
|
|
107
107
|
).each do |k, v|
|
|
108
108
|
@errors[k.to_sym] = Array.wrap(v)
|
|
109
|
-
end
|
|
109
|
+
end
|
|
110
110
|
end
|
|
111
111
|
@errors
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
def errors_for name
|
|
114
|
+
def errors_for name
|
|
115
115
|
name.must_be.a Symbol
|
|
116
116
|
errors[name]
|
|
117
117
|
end
|
|
@@ -124,16 +124,16 @@ class Rad::Html::ModelHelper
|
|
|
124
124
|
end
|
|
125
125
|
end
|
|
126
126
|
|
|
127
|
-
def value_of name
|
|
128
|
-
if model.respond_to? name
|
|
127
|
+
def value_of name
|
|
128
|
+
if model.respond_to? name
|
|
129
129
|
model.send name
|
|
130
130
|
elsif model.respond_to? :[]
|
|
131
131
|
model[name.to_sym] || model[name.to_s]
|
|
132
132
|
else
|
|
133
|
-
raise "
|
|
133
|
+
raise "model does not respond to :#{name} nor to :[] (#{model.inspect})!"
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
|
-
|
|
136
|
+
|
|
137
137
|
def insert_human_readable_label name, options
|
|
138
138
|
unless options.include?(:label)
|
|
139
139
|
options[:label] = model.t(name) if model.respond_to? :t
|
data/lib/rad/html/_require.rb
CHANGED
|
@@ -6,15 +6,15 @@ class PrepareFlash < Rad::Conveyors::Processor
|
|
|
6
6
|
def call
|
|
7
7
|
workspace.request.must_be.present
|
|
8
8
|
workspace.params.must_be.defined
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
previous_messages = workspace.request.session.delete 'flash'
|
|
11
11
|
if previous_messages.present?
|
|
12
12
|
previous_messages = JSON.load previous_messages
|
|
13
13
|
rad[:flash] = Rad::Html::Flash.new workspace.params.format, previous_messages
|
|
14
14
|
end
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
next_processor.call
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
if rad.include? :flash
|
|
19
19
|
flash = rad[:flash]
|
|
20
20
|
messages = flash.messages_for_next_request
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
rad.html
|
|
2
2
|
|
|
3
3
|
# Converts {'model[attribute]' => value} into {'model' => {'attribute' => value}}
|
|
4
|
-
class ScopedParams < Rad::Conveyors::Processor
|
|
4
|
+
class ScopedParams < Rad::Conveyors::Processor
|
|
5
5
|
def call
|
|
6
6
|
if workspace.params?
|
|
7
7
|
to_delete = []
|
|
8
8
|
to_add = {}
|
|
9
9
|
workspace.params.each do |name, value|
|
|
10
10
|
name.to_s.scan /(.+)\[(.+)\]/ do |scope_name, name_in_scope|
|
|
11
|
-
logger.warn "RAD owerriding :#{scope} param!" if workspace.params.include? scope_name
|
|
12
|
-
scope = to_add[scope_name.to_sym] ||= {}
|
|
11
|
+
logger.warn "RAD owerriding :#{scope} param!" if workspace.params.include? scope_name
|
|
12
|
+
scope = to_add[scope_name.to_sym] ||= {}
|
|
13
13
|
scope[name_in_scope] = value
|
|
14
14
|
to_delete << name
|
|
15
15
|
end
|
|
@@ -17,7 +17,7 @@ class ScopedParams < Rad::Conveyors::Processor
|
|
|
17
17
|
workspace.params.merge! to_add
|
|
18
18
|
to_delete.each{|n| workspace.params.delete n}
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
next_processor.call
|
|
22
22
|
end
|
|
23
23
|
end
|
data/lib/rad/http/_http.rb
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
class Rad::Http
|
|
2
2
|
# inject environment: :environment
|
|
3
3
|
attr_reader :rack_adapter, :http_adapter
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
attr_writer :browser_generated_types, :browser_generated_formats
|
|
6
6
|
def browser_generated_types; @browser_generated_types ||= [] end
|
|
7
7
|
def browser_generated_formats; @browser_generated_formats ||= [] end
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
def initialize
|
|
10
10
|
@rack_adapter, @http_adapter = Rad::Http::RackAdapter.new, Rad::Http::HttpAdapter.new
|
|
11
|
-
end
|
|
12
|
-
|
|
11
|
+
end
|
|
12
|
+
|
|
13
13
|
delegate :configure_rack!, :stack, :run, to: :rack_adapter
|
|
14
14
|
delegate :call, to: :http_adapter
|
|
15
15
|
end
|
|
@@ -7,18 +7,18 @@ class Rad::Http::HttpAdapter
|
|
|
7
7
|
{env: env, response: Rad::Http::Response.new}.merge(workspace),
|
|
8
8
|
&block
|
|
9
9
|
)
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
response = workspace.response.must_be.defined
|
|
12
12
|
result = response.finish
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
result
|
|
15
15
|
end
|
|
16
16
|
# synchronize_method :call
|
|
17
17
|
|
|
18
18
|
# def mock_call env = {}, workspace = {}, &block
|
|
19
19
|
# env['PATH_INFO'] ||= '/'
|
|
20
|
-
# env['rack.input'] ||= StringIO.new
|
|
21
|
-
#
|
|
20
|
+
# env['rack.input'] ||= StringIO.new
|
|
21
|
+
#
|
|
22
22
|
# call env, workspace, &block
|
|
23
|
-
# end
|
|
23
|
+
# end
|
|
24
24
|
end
|
data/lib/rad/http/_request.rb
CHANGED
|
@@ -3,11 +3,11 @@ class Rad::Http::Request < Rack::Request
|
|
|
3
3
|
# def accept
|
|
4
4
|
# @env['HTTP_ACCEPT'].to_s.split(',').map { |a| a.split(';')[0].strip }
|
|
5
5
|
# end
|
|
6
|
-
#
|
|
6
|
+
#
|
|
7
7
|
# def secure?
|
|
8
8
|
# (@env['HTTP_X_FORWARDED_PROTO'] || @env['rack.url_scheme']) == 'https'
|
|
9
9
|
# end
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
# Returns all the \subdomains as an array, so <tt>["dev", "www"]</tt> would be
|
|
12
12
|
# returned for "dev.www.rubyonrails.org". You can specify a different <tt>tld_length</tt>,
|
|
13
13
|
# such as 2 to catch <tt>["www"]</tt> instead of <tt>["www", "rubyonrails"]</tt>
|
|
@@ -31,21 +31,21 @@ class Rad::Http::Request < Rack::Request
|
|
|
31
31
|
@cookies_with_memory ||= cookies_without_memory
|
|
32
32
|
end
|
|
33
33
|
alias_method_chain :cookies, :memory
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
def normalized_domain
|
|
36
36
|
return nil unless named_host?(host)
|
|
37
37
|
host.sub('www.', '').downcase
|
|
38
38
|
end
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
def from_browser?
|
|
41
41
|
# format = workspace.params.format
|
|
42
42
|
# (format.present? and !rad.http.browser_generated_formats.include?(format)) or
|
|
43
43
|
content_type.present? and rad.http.browser_generated_types.include?(content_type.downcase)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
#
|
|
46
|
+
#
|
|
47
47
|
# Need this to access original, not normalized with Utils.normalize_params params
|
|
48
|
-
#
|
|
48
|
+
#
|
|
49
49
|
def raw_params
|
|
50
50
|
post = {}
|
|
51
51
|
@env['rack.input'].read.split('&').each do |tuple|
|
|
@@ -56,13 +56,13 @@ class Rad::Http::Request < Rack::Request
|
|
|
56
56
|
rescue EOFError
|
|
57
57
|
self.GET
|
|
58
58
|
end
|
|
59
|
-
|
|
60
|
-
class << self
|
|
59
|
+
|
|
60
|
+
class << self
|
|
61
61
|
def stub url = '/'
|
|
62
62
|
env = stub_environment(url)
|
|
63
63
|
Rad::Http::Request.new env
|
|
64
64
|
end
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
def stub_environment url = nil
|
|
67
67
|
env = {
|
|
68
68
|
'rack.url_scheme' => 'http',
|
|
@@ -77,14 +77,14 @@ class Rad::Http::Request < Rack::Request
|
|
|
77
77
|
# 'REQUEST_PATH' => uri.path,
|
|
78
78
|
'PATH_INFO' => uri.path,
|
|
79
79
|
# 'REQUEST_URI' => uri.path,
|
|
80
|
-
'QUERY_STRING' => uri.query
|
|
80
|
+
'QUERY_STRING' => uri.query
|
|
81
81
|
)
|
|
82
82
|
end
|
|
83
83
|
env
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
protected
|
|
87
|
+
protected
|
|
88
88
|
def named_host?(host)
|
|
89
89
|
!(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host))
|
|
90
90
|
end
|
data/lib/rad/http/_require.rb
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
#
|
|
2
2
|
# Dependencies
|
|
3
|
-
#
|
|
3
|
+
#
|
|
4
4
|
require 'rack'
|
|
5
5
|
require 'rack/builder'
|
|
6
6
|
|
|
7
7
|
class Rad::Http
|
|
8
8
|
attr_accessor :host, :port, :static, :url_root, :default_format, :session
|
|
9
9
|
attr_required :host, :port, :url_root, :default_format
|
|
10
|
-
def static?; !!@static end
|
|
11
|
-
|
|
10
|
+
def static?; !!@static end
|
|
11
|
+
|
|
12
12
|
attr_writer :public_path
|
|
13
13
|
def public_path
|
|
14
14
|
@public_path || "#{rad.runtime_path}/public"
|
|
@@ -16,18 +16,18 @@ class Rad::Http
|
|
|
16
16
|
def public_path?; !!public_path end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
%w(
|
|
19
|
+
%w(
|
|
20
20
|
rack_adapter
|
|
21
21
|
fixes
|
|
22
22
|
).each{|f| require "rad/http/_support/rack/#{f}"}
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
#
|
|
25
|
+
#
|
|
26
26
|
# Libraries
|
|
27
|
-
#
|
|
27
|
+
#
|
|
28
28
|
%w(
|
|
29
29
|
_request
|
|
30
30
|
_response
|
|
31
31
|
_http_adapter
|
|
32
|
-
_http
|
|
32
|
+
_http
|
|
33
33
|
).each{|f| require "rad/http/#{f}"}
|
data/lib/rad/http/_response.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class Rad::Http::Response < Rack::Response
|
|
2
|
-
include ::OpenConstructor
|
|
2
|
+
include RubyExt::OpenConstructor
|
|
3
3
|
|
|
4
4
|
STATUS_MESSAGES = {
|
|
5
5
|
ok: 200,
|
|
@@ -23,7 +23,7 @@ class Rad::Http::Response < Rack::Response
|
|
|
23
23
|
|
|
24
24
|
# def to_a
|
|
25
25
|
# [status, headers, body]
|
|
26
|
-
# end
|
|
26
|
+
# end
|
|
27
27
|
|
|
28
28
|
def body_as_string
|
|
29
29
|
if @body.is_a? String
|
|
@@ -44,13 +44,13 @@ class Rad::Http::Response < Rack::Response
|
|
|
44
44
|
def cookies
|
|
45
45
|
self['Set-Cookie']
|
|
46
46
|
end
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
def clear
|
|
49
49
|
@status = 200
|
|
50
|
-
@header = Rack::Utils::HeaderHash.new("Content-Type" => nil)
|
|
50
|
+
@header = Rack::Utils::HeaderHash.new("Content-Type" => nil)
|
|
51
51
|
@length = 0
|
|
52
52
|
@body = []
|
|
53
|
-
end
|
|
53
|
+
end
|
|
54
54
|
|
|
55
55
|
def status= code_or_message
|
|
56
56
|
@status = if code_or_message.is_a? Numeric
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Rack doesn't works well with ruby 1.9.2
|
|
3
3
|
# there's no :each method in String anymore
|
|
4
|
-
#
|
|
4
|
+
#
|
|
5
5
|
class Rack::Response
|
|
6
6
|
def each(&callback)
|
|
7
7
|
if @body.is_a? String
|
|
@@ -19,9 +19,9 @@ class Rack::Request
|
|
|
19
19
|
def params
|
|
20
20
|
@params ||= encode_in_utf8(params_with_wrong_encoding)
|
|
21
21
|
end
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
# it returns "application/x-www-form-urlencoded; charset=UTF-8" instead of "application/x-www-form-urlencoded"
|
|
24
|
-
def content_type_with_fix
|
|
24
|
+
def content_type_with_fix
|
|
25
25
|
content_type_without_fix && content_type_without_fix.split(';').first
|
|
26
26
|
end
|
|
27
27
|
alias_method_chain :content_type, :fix
|
|
@@ -8,12 +8,12 @@ class Rad::Http::RackAdapter
|
|
|
8
8
|
|
|
9
9
|
# class << self
|
|
10
10
|
inject logger: :logger
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
def configure_rack! builder
|
|
13
13
|
raise "Rack stack not defined! Use profiles (see rad/profiles/web.rb), or use your own configuration!" if stack.empty?
|
|
14
14
|
stack.each{|conf| conf.call builder}
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
def stack
|
|
18
18
|
@rack_stack ||= []
|
|
19
19
|
end
|
|
@@ -33,10 +33,10 @@ class Rad::Http::RackAdapter
|
|
|
33
33
|
def quit!(server, handler_name)
|
|
34
34
|
## Use thins' hard #stop! if available, otherwise just #stop
|
|
35
35
|
server.respond_to?(:stop!) ? server.stop! : server.stop
|
|
36
|
-
puts "\nRad stopped" unless handler_name =~/cgi/i
|
|
36
|
+
puts "\nRad stopped" unless handler_name =~/cgi/i
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
protected
|
|
39
|
+
protected
|
|
40
40
|
def detect_rack_handler
|
|
41
41
|
return Rack::Handler.get('thin')
|
|
42
42
|
SERVERS.each do |server_name|
|
|
@@ -48,6 +48,6 @@ class Rad::Http::RackAdapter
|
|
|
48
48
|
end
|
|
49
49
|
fail " Server handler (#{SERVERS.join(', ')}) not found."
|
|
50
50
|
end
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
# end
|
|
53
53
|
end
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
rad.http
|
|
2
2
|
|
|
3
3
|
class EvaluateFormat < Rad::Conveyors::Processor
|
|
4
|
-
def call
|
|
4
|
+
def call
|
|
5
5
|
path = workspace.path.must_be.defined
|
|
6
6
|
params = workspace.params.must_be.defined
|
|
7
|
-
parts = path.split('.')
|
|
7
|
+
parts = path.split('.')
|
|
8
8
|
if parts.size > 1
|
|
9
9
|
format = parts.last
|
|
10
|
-
logger.warn "RAD two :format parameters!" if params.include?(:format)
|
|
10
|
+
logger.warn "RAD two :format parameters!" if params.include?(:format)
|
|
11
11
|
workspace.params = params.clone
|
|
12
12
|
workspace.params.format = format
|
|
13
13
|
else
|
|
14
14
|
params.format ||= rad.http.default_format
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
next_processor.call
|
|
18
18
|
end
|
|
19
19
|
end
|