actionpack 3.2.19 → 4.0.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +850 -401
- data/MIT-LICENSE +1 -1
- data/README.rdoc +5 -288
- data/lib/abstract_controller/asset_paths.rb +2 -2
- data/lib/abstract_controller/base.rb +39 -37
- data/lib/abstract_controller/callbacks.rb +101 -82
- data/lib/abstract_controller/collector.rb +7 -3
- data/lib/abstract_controller/helpers.rb +25 -13
- data/lib/abstract_controller/layouts.rb +74 -74
- data/lib/abstract_controller/logger.rb +1 -2
- data/lib/abstract_controller/rendering.rb +30 -13
- data/lib/abstract_controller/translation.rb +16 -1
- data/lib/abstract_controller/url_for.rb +6 -6
- data/lib/abstract_controller/view_paths.rb +1 -1
- data/lib/abstract_controller.rb +1 -8
- data/lib/action_controller/base.rb +46 -22
- data/lib/action_controller/caching/fragments.rb +23 -53
- data/lib/action_controller/caching.rb +46 -33
- data/lib/action_controller/deprecated/integration_test.rb +3 -0
- data/lib/action_controller/deprecated.rb +5 -1
- data/lib/action_controller/log_subscriber.rb +16 -8
- data/lib/action_controller/metal/conditional_get.rb +76 -32
- data/lib/action_controller/metal/data_streaming.rb +20 -26
- data/lib/action_controller/metal/exceptions.rb +19 -6
- data/lib/action_controller/metal/flash.rb +24 -9
- data/lib/action_controller/metal/force_ssl.rb +70 -12
- data/lib/action_controller/metal/head.rb +25 -4
- data/lib/action_controller/metal/helpers.rb +5 -9
- data/lib/action_controller/metal/hide_actions.rb +0 -1
- data/lib/action_controller/metal/http_authentication.rb +107 -83
- data/lib/action_controller/metal/implicit_render.rb +1 -1
- data/lib/action_controller/metal/instrumentation.rb +2 -1
- data/lib/action_controller/metal/live.rb +175 -0
- data/lib/action_controller/metal/mime_responds.rb +161 -47
- data/lib/action_controller/metal/params_wrapper.rb +112 -74
- data/lib/action_controller/metal/rack_delegation.rb +9 -3
- data/lib/action_controller/metal/redirecting.rb +15 -20
- data/lib/action_controller/metal/renderers.rb +11 -9
- data/lib/action_controller/metal/rendering.rb +9 -1
- data/lib/action_controller/metal/request_forgery_protection.rb +112 -19
- data/lib/action_controller/metal/responder.rb +20 -19
- data/lib/action_controller/metal/streaming.rb +12 -18
- data/lib/action_controller/metal/strong_parameters.rb +520 -0
- data/lib/action_controller/metal/testing.rb +13 -18
- data/lib/action_controller/metal/url_for.rb +28 -25
- data/lib/action_controller/metal.rb +17 -32
- data/lib/action_controller/model_naming.rb +12 -0
- data/lib/action_controller/railtie.rb +33 -17
- data/lib/action_controller/railties/helpers.rb +22 -0
- data/lib/action_controller/record_identifier.rb +18 -72
- data/lib/action_controller/test_case.rb +251 -131
- data/lib/action_controller/vendor/html-scanner.rb +4 -19
- data/lib/action_controller.rb +15 -6
- data/lib/action_dispatch/http/cache.rb +63 -11
- data/lib/action_dispatch/http/filter_parameters.rb +18 -8
- data/lib/action_dispatch/http/filter_redirect.rb +37 -0
- data/lib/action_dispatch/http/headers.rb +49 -17
- data/lib/action_dispatch/http/mime_negotiation.rb +24 -1
- data/lib/action_dispatch/http/mime_type.rb +154 -100
- data/lib/action_dispatch/http/mime_types.rb +1 -1
- data/lib/action_dispatch/http/parameter_filter.rb +44 -46
- data/lib/action_dispatch/http/parameters.rb +28 -28
- data/lib/action_dispatch/http/rack_cache.rb +2 -3
- data/lib/action_dispatch/http/request.rb +64 -18
- data/lib/action_dispatch/http/response.rb +130 -35
- data/lib/action_dispatch/http/upload.rb +63 -20
- data/lib/action_dispatch/http/url.rb +98 -35
- data/lib/action_dispatch/journey/backwards.rb +5 -0
- data/lib/action_dispatch/journey/formatter.rb +146 -0
- data/lib/action_dispatch/journey/gtg/builder.rb +162 -0
- data/lib/action_dispatch/journey/gtg/simulator.rb +44 -0
- data/lib/action_dispatch/journey/gtg/transition_table.rb +156 -0
- data/lib/action_dispatch/journey/nfa/builder.rb +76 -0
- data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
- data/lib/action_dispatch/journey/nfa/simulator.rb +47 -0
- data/lib/action_dispatch/journey/nfa/transition_table.rb +163 -0
- data/lib/action_dispatch/journey/nodes/node.rb +124 -0
- data/lib/action_dispatch/journey/parser.rb +206 -0
- data/lib/action_dispatch/journey/parser.y +47 -0
- data/lib/action_dispatch/journey/parser_extras.rb +23 -0
- data/lib/action_dispatch/journey/path/pattern.rb +196 -0
- data/lib/action_dispatch/journey/route.rb +124 -0
- data/lib/action_dispatch/journey/router/strexp.rb +24 -0
- data/lib/action_dispatch/journey/router/utils.rb +54 -0
- data/lib/action_dispatch/journey/router.rb +166 -0
- data/lib/action_dispatch/journey/routes.rb +75 -0
- data/lib/action_dispatch/journey/scanner.rb +61 -0
- data/lib/action_dispatch/journey/visitors.rb +197 -0
- data/lib/action_dispatch/journey/visualizer/fsm.css +34 -0
- data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
- data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
- data/lib/action_dispatch/journey.rb +5 -0
- data/lib/action_dispatch/middleware/callbacks.rb +9 -4
- data/lib/action_dispatch/middleware/cookies.rb +259 -114
- data/lib/action_dispatch/middleware/debug_exceptions.rb +26 -17
- data/lib/action_dispatch/middleware/exception_wrapper.rb +29 -3
- data/lib/action_dispatch/middleware/flash.rb +58 -58
- data/lib/action_dispatch/middleware/params_parser.rb +14 -29
- data/lib/action_dispatch/middleware/public_exceptions.rb +30 -14
- data/lib/action_dispatch/middleware/reloader.rb +6 -6
- data/lib/action_dispatch/middleware/remote_ip.rb +145 -39
- data/lib/action_dispatch/middleware/request_id.rb +2 -6
- data/lib/action_dispatch/middleware/session/abstract_store.rb +22 -20
- data/lib/action_dispatch/middleware/session/cookie_store.rb +82 -28
- data/lib/action_dispatch/middleware/session/mem_cache_store.rb +8 -3
- data/lib/action_dispatch/middleware/show_exceptions.rb +12 -45
- data/lib/action_dispatch/middleware/ssl.rb +70 -0
- data/lib/action_dispatch/middleware/stack.rb +6 -1
- data/lib/action_dispatch/middleware/static.rb +2 -1
- data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +14 -11
- data/lib/action_dispatch/middleware/templates/rescues/_source.erb +25 -0
- data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +7 -9
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +15 -9
- data/lib/action_dispatch/middleware/templates/rescues/layout.erb +127 -5
- data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +7 -2
- data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +30 -15
- data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +39 -13
- data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +6 -2
- data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
- data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +144 -0
- data/lib/action_dispatch/railtie.rb +16 -6
- data/lib/action_dispatch/request/session.rb +181 -0
- data/lib/action_dispatch/routing/inspector.rb +240 -0
- data/lib/action_dispatch/routing/mapper.rb +540 -291
- data/lib/action_dispatch/routing/polymorphic_routes.rb +16 -20
- data/lib/action_dispatch/routing/redirection.rb +46 -29
- data/lib/action_dispatch/routing/route_set.rb +207 -164
- data/lib/action_dispatch/routing/routes_proxy.rb +2 -0
- data/lib/action_dispatch/routing/url_for.rb +48 -33
- data/lib/action_dispatch/routing.rb +48 -83
- data/lib/action_dispatch/testing/assertions/dom.rb +3 -13
- data/lib/action_dispatch/testing/assertions/response.rb +32 -40
- data/lib/action_dispatch/testing/assertions/routing.rb +42 -41
- data/lib/action_dispatch/testing/assertions/selector.rb +17 -22
- data/lib/action_dispatch/testing/assertions/tag.rb +20 -23
- data/lib/action_dispatch/testing/integration.rb +65 -51
- data/lib/action_dispatch/testing/test_process.rb +9 -6
- data/lib/action_dispatch/testing/test_request.rb +7 -3
- data/lib/action_dispatch.rb +21 -15
- data/lib/action_pack/version.rb +7 -6
- data/lib/action_pack.rb +1 -1
- data/lib/action_view/base.rb +15 -34
- data/lib/action_view/buffers.rb +7 -1
- data/lib/action_view/context.rb +4 -4
- data/lib/action_view/dependency_tracker.rb +93 -0
- data/lib/action_view/digestor.rb +85 -0
- data/lib/action_view/flows.rb +1 -4
- data/lib/action_view/helpers/active_model_helper.rb +3 -4
- data/lib/action_view/helpers/asset_tag_helper.rb +215 -352
- data/lib/action_view/helpers/asset_url_helper.rb +355 -0
- data/lib/action_view/helpers/atom_feed_helper.rb +13 -10
- data/lib/action_view/helpers/cache_helper.rb +150 -18
- data/lib/action_view/helpers/capture_helper.rb +44 -31
- data/lib/action_view/helpers/csrf_helper.rb +0 -2
- data/lib/action_view/helpers/date_helper.rb +269 -248
- data/lib/action_view/helpers/debug_helper.rb +10 -11
- data/lib/action_view/helpers/form_helper.rb +931 -537
- data/lib/action_view/helpers/form_options_helper.rb +341 -166
- data/lib/action_view/helpers/form_tag_helper.rb +190 -90
- data/lib/action_view/helpers/javascript_helper.rb +23 -16
- data/lib/action_view/helpers/number_helper.rb +148 -329
- data/lib/action_view/helpers/output_safety_helper.rb +3 -3
- data/lib/action_view/helpers/record_tag_helper.rb +17 -22
- data/lib/action_view/helpers/rendering_helper.rb +2 -2
- data/lib/action_view/helpers/sanitize_helper.rb +3 -6
- data/lib/action_view/helpers/tag_helper.rb +46 -33
- data/lib/action_view/helpers/tags/base.rb +147 -0
- data/lib/action_view/helpers/tags/check_box.rb +64 -0
- data/lib/action_view/helpers/tags/checkable.rb +16 -0
- data/lib/action_view/helpers/tags/collection_check_boxes.rb +43 -0
- data/lib/action_view/helpers/tags/collection_helpers.rb +83 -0
- data/lib/action_view/helpers/tags/collection_radio_buttons.rb +36 -0
- data/lib/action_view/helpers/tags/collection_select.rb +28 -0
- data/lib/action_view/helpers/tags/color_field.rb +25 -0
- data/lib/action_view/helpers/tags/date_field.rb +13 -0
- data/lib/action_view/helpers/tags/date_select.rb +72 -0
- data/lib/action_view/helpers/tags/datetime_field.rb +22 -0
- data/lib/action_view/helpers/tags/datetime_local_field.rb +19 -0
- data/lib/action_view/helpers/tags/datetime_select.rb +8 -0
- data/lib/action_view/helpers/tags/email_field.rb +8 -0
- data/lib/action_view/helpers/tags/file_field.rb +8 -0
- data/lib/action_view/helpers/tags/grouped_collection_select.rb +29 -0
- data/lib/action_view/helpers/tags/hidden_field.rb +8 -0
- data/lib/action_view/helpers/tags/label.rb +65 -0
- data/lib/action_view/helpers/tags/month_field.rb +13 -0
- data/lib/action_view/helpers/tags/number_field.rb +18 -0
- data/lib/action_view/helpers/tags/password_field.rb +12 -0
- data/lib/action_view/helpers/tags/radio_button.rb +31 -0
- data/lib/action_view/helpers/tags/range_field.rb +8 -0
- data/lib/action_view/helpers/tags/search_field.rb +24 -0
- data/lib/action_view/helpers/tags/select.rb +40 -0
- data/lib/action_view/helpers/tags/tel_field.rb +8 -0
- data/lib/action_view/helpers/tags/text_area.rb +18 -0
- data/lib/action_view/helpers/tags/text_field.rb +29 -0
- data/lib/action_view/helpers/tags/time_field.rb +13 -0
- data/lib/action_view/helpers/tags/time_select.rb +8 -0
- data/lib/action_view/helpers/tags/time_zone_select.rb +20 -0
- data/lib/action_view/helpers/tags/url_field.rb +8 -0
- data/lib/action_view/helpers/tags/week_field.rb +13 -0
- data/lib/action_view/helpers/tags.rb +39 -0
- data/lib/action_view/helpers/text_helper.rb +130 -114
- data/lib/action_view/helpers/translation_helper.rb +32 -16
- data/lib/action_view/helpers/url_helper.rb +211 -270
- data/lib/action_view/helpers.rb +2 -4
- data/lib/action_view/locale/en.yml +1 -105
- data/lib/action_view/log_subscriber.rb +6 -4
- data/lib/action_view/lookup_context.rb +15 -28
- data/lib/action_view/model_naming.rb +12 -0
- data/lib/action_view/path_set.rb +8 -20
- data/lib/action_view/railtie.rb +6 -22
- data/lib/action_view/record_identifier.rb +84 -0
- data/lib/action_view/renderer/abstract_renderer.rb +25 -19
- data/lib/action_view/renderer/partial_renderer.rb +158 -81
- data/lib/action_view/renderer/renderer.rb +8 -12
- data/lib/action_view/renderer/streaming_template_renderer.rb +2 -5
- data/lib/action_view/renderer/template_renderer.rb +12 -10
- data/lib/action_view/routing_url_for.rb +107 -0
- data/lib/action_view/template/error.rb +22 -12
- data/lib/action_view/template/handlers/builder.rb +1 -1
- data/lib/action_view/template/handlers/erb.rb +40 -19
- data/lib/action_view/template/handlers/raw.rb +11 -0
- data/lib/action_view/template/handlers.rb +12 -9
- data/lib/action_view/template/resolver.rb +107 -53
- data/lib/action_view/template/text.rb +12 -8
- data/lib/action_view/template/types.rb +57 -0
- data/lib/action_view/template.rb +25 -23
- data/lib/action_view/test_case.rb +67 -42
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/document.rb +0 -0
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/node.rb +12 -12
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/sanitizer.rb +13 -2
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/selector.rb +9 -9
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/tokenizer.rb +1 -1
- data/lib/{action_controller → action_view}/vendor/html-scanner/html/version.rb +0 -0
- data/lib/action_view/vendor/html-scanner.rb +20 -0
- data/lib/action_view.rb +17 -8
- metadata +184 -214
- data/lib/action_controller/caching/actions.rb +0 -185
- data/lib/action_controller/caching/pages.rb +0 -187
- data/lib/action_controller/caching/sweeping.rb +0 -97
- data/lib/action_controller/deprecated/performance_test.rb +0 -1
- data/lib/action_controller/metal/compatibility.rb +0 -65
- data/lib/action_controller/metal/session_management.rb +0 -14
- data/lib/action_controller/railties/paths.rb +0 -25
- data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
- data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
- data/lib/action_dispatch/middleware/head.rb +0 -18
- data/lib/action_dispatch/middleware/rescue.rb +0 -26
- data/lib/action_dispatch/testing/performance_test.rb +0 -10
- data/lib/action_view/asset_paths.rb +0 -142
- data/lib/action_view/helpers/asset_paths.rb +0 -7
- data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
- data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
- data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
- data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
- data/lib/sprockets/assets.rake +0 -99
- data/lib/sprockets/bootstrap.rb +0 -37
- data/lib/sprockets/compressors.rb +0 -83
- data/lib/sprockets/helpers/isolated_helper.rb +0 -13
- data/lib/sprockets/helpers/rails_helper.rb +0 -182
- data/lib/sprockets/helpers.rb +0 -6
- data/lib/sprockets/railtie.rb +0 -62
- data/lib/sprockets/static_compiler.rb +0 -56
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
require 'stringio'
|
|
2
2
|
require 'uri'
|
|
3
3
|
require 'active_support/core_ext/kernel/singleton_class'
|
|
4
|
-
require 'active_support/core_ext/object/inclusion'
|
|
5
4
|
require 'active_support/core_ext/object/try'
|
|
6
5
|
require 'rack/test'
|
|
7
|
-
require '
|
|
6
|
+
require 'minitest/unit'
|
|
8
7
|
|
|
9
8
|
module ActionDispatch
|
|
10
9
|
module Integration #:nodoc:
|
|
@@ -18,56 +17,62 @@ module ActionDispatch
|
|
|
18
17
|
# a Hash, or a String that is appropriately encoded
|
|
19
18
|
# (<tt>application/x-www-form-urlencoded</tt> or
|
|
20
19
|
# <tt>multipart/form-data</tt>).
|
|
21
|
-
# - +
|
|
20
|
+
# - +headers_or_env+: Additional headers to pass, as a Hash. The headers will be
|
|
22
21
|
# merged into the Rack env hash.
|
|
23
22
|
#
|
|
24
|
-
# This method returns
|
|
23
|
+
# This method returns a Response object, which one can use to
|
|
25
24
|
# inspect the details of the response. Furthermore, if this method was
|
|
26
25
|
# called from an ActionDispatch::IntegrationTest object, then that
|
|
27
26
|
# object's <tt>@response</tt> instance variable will point to the same
|
|
28
27
|
# response object.
|
|
29
28
|
#
|
|
30
|
-
# You can also perform POST, PUT, DELETE, and HEAD requests with
|
|
31
|
-
# +#put+, +#delete+, and +#head+.
|
|
32
|
-
def get(path, parameters = nil,
|
|
33
|
-
process :get, path, parameters,
|
|
29
|
+
# You can also perform POST, PATCH, PUT, DELETE, and HEAD requests with
|
|
30
|
+
# +#post+, +#patch+, +#put+, +#delete+, and +#head+.
|
|
31
|
+
def get(path, parameters = nil, headers_or_env = nil)
|
|
32
|
+
process :get, path, parameters, headers_or_env
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
# Performs a POST request with the given parameters. See +#get+ for more
|
|
37
36
|
# details.
|
|
38
|
-
def post(path, parameters = nil,
|
|
39
|
-
process :post, path, parameters,
|
|
37
|
+
def post(path, parameters = nil, headers_or_env = nil)
|
|
38
|
+
process :post, path, parameters, headers_or_env
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Performs a PATCH request with the given parameters. See +#get+ for more
|
|
42
|
+
# details.
|
|
43
|
+
def patch(path, parameters = nil, headers_or_env = nil)
|
|
44
|
+
process :patch, path, parameters, headers_or_env
|
|
40
45
|
end
|
|
41
46
|
|
|
42
47
|
# Performs a PUT request with the given parameters. See +#get+ for more
|
|
43
48
|
# details.
|
|
44
|
-
def put(path, parameters = nil,
|
|
45
|
-
process :put, path, parameters,
|
|
49
|
+
def put(path, parameters = nil, headers_or_env = nil)
|
|
50
|
+
process :put, path, parameters, headers_or_env
|
|
46
51
|
end
|
|
47
52
|
|
|
48
53
|
# Performs a DELETE request with the given parameters. See +#get+ for
|
|
49
54
|
# more details.
|
|
50
|
-
def delete(path, parameters = nil,
|
|
51
|
-
process :delete, path, parameters,
|
|
55
|
+
def delete(path, parameters = nil, headers_or_env = nil)
|
|
56
|
+
process :delete, path, parameters, headers_or_env
|
|
52
57
|
end
|
|
53
58
|
|
|
54
59
|
# Performs a HEAD request with the given parameters. See +#get+ for more
|
|
55
60
|
# details.
|
|
56
|
-
def head(path, parameters = nil,
|
|
57
|
-
process :head, path, parameters,
|
|
61
|
+
def head(path, parameters = nil, headers_or_env = nil)
|
|
62
|
+
process :head, path, parameters, headers_or_env
|
|
58
63
|
end
|
|
59
64
|
|
|
60
65
|
# Performs an XMLHttpRequest request with the given parameters, mirroring
|
|
61
66
|
# a request from the Prototype library.
|
|
62
67
|
#
|
|
63
|
-
# The request_method is +:get+, +:post+, +:put+, +:delete+ or
|
|
64
|
-
# parameters are +nil+, a hash, or a url-encoded or multipart
|
|
65
|
-
# the headers are a hash.
|
|
66
|
-
def xml_http_request(request_method, path, parameters = nil,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
process(request_method, path, parameters,
|
|
68
|
+
# The request_method is +:get+, +:post+, +:patch+, +:put+, +:delete+ or
|
|
69
|
+
# +:head+; the parameters are +nil+, a hash, or a url-encoded or multipart
|
|
70
|
+
# string; the headers are a hash.
|
|
71
|
+
def xml_http_request(request_method, path, parameters = nil, headers_or_env = nil)
|
|
72
|
+
headers_or_env ||= {}
|
|
73
|
+
headers_or_env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
|
|
74
|
+
headers_or_env['HTTP_ACCEPT'] ||= [Mime::JS, Mime::HTML, Mime::XML, 'text/xml', Mime::ALL].join(', ')
|
|
75
|
+
process(request_method, path, parameters, headers_or_env)
|
|
71
76
|
end
|
|
72
77
|
alias xhr :xml_http_request
|
|
73
78
|
|
|
@@ -84,34 +89,40 @@ module ActionDispatch
|
|
|
84
89
|
# redirect. Note that the redirects are followed until the response is
|
|
85
90
|
# not a redirect--this means you may run into an infinite loop if your
|
|
86
91
|
# redirect loops back to itself.
|
|
87
|
-
def request_via_redirect(http_method, path, parameters = nil,
|
|
88
|
-
process(http_method, path, parameters,
|
|
92
|
+
def request_via_redirect(http_method, path, parameters = nil, headers_or_env = nil)
|
|
93
|
+
process(http_method, path, parameters, headers_or_env)
|
|
89
94
|
follow_redirect! while redirect?
|
|
90
95
|
status
|
|
91
96
|
end
|
|
92
97
|
|
|
93
98
|
# Performs a GET request, following any subsequent redirect.
|
|
94
99
|
# See +request_via_redirect+ for more information.
|
|
95
|
-
def get_via_redirect(path, parameters = nil,
|
|
96
|
-
request_via_redirect(:get, path, parameters,
|
|
100
|
+
def get_via_redirect(path, parameters = nil, headers_or_env = nil)
|
|
101
|
+
request_via_redirect(:get, path, parameters, headers_or_env)
|
|
97
102
|
end
|
|
98
103
|
|
|
99
104
|
# Performs a POST request, following any subsequent redirect.
|
|
100
105
|
# See +request_via_redirect+ for more information.
|
|
101
|
-
def post_via_redirect(path, parameters = nil,
|
|
102
|
-
request_via_redirect(:post, path, parameters,
|
|
106
|
+
def post_via_redirect(path, parameters = nil, headers_or_env = nil)
|
|
107
|
+
request_via_redirect(:post, path, parameters, headers_or_env)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Performs a PATCH request, following any subsequent redirect.
|
|
111
|
+
# See +request_via_redirect+ for more information.
|
|
112
|
+
def patch_via_redirect(path, parameters = nil, headers_or_env = nil)
|
|
113
|
+
request_via_redirect(:patch, path, parameters, headers_or_env)
|
|
103
114
|
end
|
|
104
115
|
|
|
105
116
|
# Performs a PUT request, following any subsequent redirect.
|
|
106
117
|
# See +request_via_redirect+ for more information.
|
|
107
|
-
def put_via_redirect(path, parameters = nil,
|
|
108
|
-
request_via_redirect(:put, path, parameters,
|
|
118
|
+
def put_via_redirect(path, parameters = nil, headers_or_env = nil)
|
|
119
|
+
request_via_redirect(:put, path, parameters, headers_or_env)
|
|
109
120
|
end
|
|
110
121
|
|
|
111
122
|
# Performs a DELETE request, following any subsequent redirect.
|
|
112
123
|
# See +request_via_redirect+ for more information.
|
|
113
|
-
def delete_via_redirect(path, parameters = nil,
|
|
114
|
-
request_via_redirect(:delete, path, parameters,
|
|
124
|
+
def delete_via_redirect(path, parameters = nil, headers_or_env = nil)
|
|
125
|
+
request_via_redirect(:delete, path, parameters, headers_or_env)
|
|
115
126
|
end
|
|
116
127
|
end
|
|
117
128
|
|
|
@@ -126,7 +137,7 @@ module ActionDispatch
|
|
|
126
137
|
class Session
|
|
127
138
|
DEFAULT_HOST = "www.example.com"
|
|
128
139
|
|
|
129
|
-
include
|
|
140
|
+
include MiniTest::Assertions
|
|
130
141
|
include TestProcess, RequestHelpers, Assertions
|
|
131
142
|
|
|
132
143
|
%w( status status_message headers body redirect? ).each do |method|
|
|
@@ -251,12 +262,11 @@ module ActionDispatch
|
|
|
251
262
|
end
|
|
252
263
|
|
|
253
264
|
# Performs the actual request.
|
|
254
|
-
def process(method, path, parameters = nil,
|
|
255
|
-
rack_env ||= {}
|
|
265
|
+
def process(method, path, parameters = nil, headers_or_env = nil)
|
|
256
266
|
if path =~ %r{://}
|
|
257
267
|
location = URI.parse(path)
|
|
258
268
|
https! URI::HTTPS === location if location.scheme
|
|
259
|
-
host! location.host if location.host
|
|
269
|
+
host! "#{location.host}:#{location.port}" if location.host
|
|
260
270
|
path = location.query ? "#{location.path}?#{location.query}" : location.path
|
|
261
271
|
end
|
|
262
272
|
|
|
@@ -283,10 +293,12 @@ module ActionDispatch
|
|
|
283
293
|
"CONTENT_TYPE" => "application/x-www-form-urlencoded",
|
|
284
294
|
"HTTP_ACCEPT" => accept
|
|
285
295
|
}
|
|
296
|
+
# this modifies the passed env directly
|
|
297
|
+
Http::Headers.new(env).merge!(headers_or_env || {})
|
|
286
298
|
|
|
287
299
|
session = Rack::Test::Session.new(_mock_session)
|
|
288
300
|
|
|
289
|
-
env.merge!(
|
|
301
|
+
env.merge!(env)
|
|
290
302
|
|
|
291
303
|
# NOTE: rack-test v0.5 doesn't build a default uri correctly
|
|
292
304
|
# Make sure requested path is always a full uri
|
|
@@ -324,12 +336,12 @@ module ActionDispatch
|
|
|
324
336
|
@integration_session = Integration::Session.new(app)
|
|
325
337
|
end
|
|
326
338
|
|
|
327
|
-
%w(get post put head delete cookies assigns
|
|
339
|
+
%w(get post patch put head delete cookies assigns
|
|
328
340
|
xml_http_request xhr get_via_redirect post_via_redirect).each do |method|
|
|
329
341
|
define_method(method) do |*args|
|
|
330
342
|
reset! unless integration_session
|
|
331
343
|
# reset the html_document variable, but only for new get/post calls
|
|
332
|
-
@html_document = nil unless method
|
|
344
|
+
@html_document = nil unless method == 'cookies' || method == 'assigns'
|
|
333
345
|
integration_session.__send__(method, *args).tap do
|
|
334
346
|
copy_session_variables!
|
|
335
347
|
end
|
|
@@ -367,7 +379,7 @@ module ActionDispatch
|
|
|
367
379
|
end
|
|
368
380
|
|
|
369
381
|
def default_url_options=(options)
|
|
370
|
-
integration_session
|
|
382
|
+
reset! unless integration_session
|
|
371
383
|
integration_session.default_url_options = options
|
|
372
384
|
end
|
|
373
385
|
|
|
@@ -413,8 +425,8 @@ module ActionDispatch
|
|
|
413
425
|
# assert_equal 200, status
|
|
414
426
|
#
|
|
415
427
|
# # post the login and follow through to the home page
|
|
416
|
-
# post "/login", :
|
|
417
|
-
# :
|
|
428
|
+
# post "/login", username: people(:jamis).username,
|
|
429
|
+
# password: people(:jamis).password
|
|
418
430
|
# follow_redirect!
|
|
419
431
|
# assert_equal 200, status
|
|
420
432
|
# assert_equal "/home", path
|
|
@@ -447,13 +459,13 @@ module ActionDispatch
|
|
|
447
459
|
# module CustomAssertions
|
|
448
460
|
# def enter(room)
|
|
449
461
|
# # reference a named route, for maximum internal consistency!
|
|
450
|
-
# get(room_url(:
|
|
462
|
+
# get(room_url(id: room.id))
|
|
451
463
|
# assert(...)
|
|
452
464
|
# ...
|
|
453
465
|
# end
|
|
454
466
|
#
|
|
455
467
|
# def speak(room, message)
|
|
456
|
-
# xml_http_request "/say/#{room.id}", :
|
|
468
|
+
# xml_http_request "/say/#{room.id}", message: message
|
|
457
469
|
# assert(...)
|
|
458
470
|
# ...
|
|
459
471
|
# end
|
|
@@ -463,8 +475,8 @@ module ActionDispatch
|
|
|
463
475
|
# open_session do |sess|
|
|
464
476
|
# sess.extend(CustomAssertions)
|
|
465
477
|
# who = people(who)
|
|
466
|
-
# sess.post "/login", :
|
|
467
|
-
# :
|
|
478
|
+
# sess.post "/login", username: who.username,
|
|
479
|
+
# password: who.password
|
|
468
480
|
# assert(...)
|
|
469
481
|
# end
|
|
470
482
|
# end
|
|
@@ -477,9 +489,11 @@ module ActionDispatch
|
|
|
477
489
|
@@app = nil
|
|
478
490
|
|
|
479
491
|
def self.app
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
492
|
+
if !@@app && !ActionDispatch.test_app
|
|
493
|
+
ActiveSupport::Deprecation.warn "Rails application fallback is deprecated and no longer works, please set ActionDispatch.test_app"
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
@@app || ActionDispatch.test_app
|
|
483
497
|
end
|
|
484
498
|
|
|
485
499
|
def self.app=(app)
|
|
@@ -5,7 +5,8 @@ require 'active_support/core_ext/hash/indifferent_access'
|
|
|
5
5
|
module ActionDispatch
|
|
6
6
|
module TestProcess
|
|
7
7
|
def assigns(key = nil)
|
|
8
|
-
assigns =
|
|
8
|
+
assigns = {}.with_indifferent_access
|
|
9
|
+
@controller.view_assigns.each { |k, v| assigns.regular_writer(k, v) }
|
|
9
10
|
key.nil? ? assigns : assigns[key]
|
|
10
11
|
end
|
|
11
12
|
|
|
@@ -25,17 +26,19 @@ module ActionDispatch
|
|
|
25
26
|
@response.redirect_url
|
|
26
27
|
end
|
|
27
28
|
|
|
28
|
-
# Shortcut for <tt>Rack::Test::UploadedFile.new(ActionController::TestCase.fixture_path
|
|
29
|
+
# Shortcut for <tt>Rack::Test::UploadedFile.new(File.join(ActionController::TestCase.fixture_path, path), type)</tt>:
|
|
29
30
|
#
|
|
30
|
-
# post :change_avatar, :
|
|
31
|
+
# post :change_avatar, avatar: fixture_file_upload('files/spongebob.png', 'image/png')
|
|
31
32
|
#
|
|
32
33
|
# To upload binary files on Windows, pass <tt>:binary</tt> as the last parameter.
|
|
33
34
|
# This will not affect other platforms:
|
|
34
35
|
#
|
|
35
|
-
# post :change_avatar, :
|
|
36
|
+
# post :change_avatar, avatar: fixture_file_upload('files/spongebob.png', 'image/png', :binary)
|
|
36
37
|
def fixture_file_upload(path, mime_type = nil, binary = false)
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
if self.class.respond_to?(:fixture_path) && self.class.fixture_path
|
|
39
|
+
path = File.join(self.class.fixture_path, path)
|
|
40
|
+
end
|
|
41
|
+
Rack::Test::UploadedFile.new(path, mime_type, binary)
|
|
39
42
|
end
|
|
40
43
|
end
|
|
41
44
|
end
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require 'active_support/core_ext/object/blank'
|
|
2
1
|
require 'active_support/core_ext/hash/indifferent_access'
|
|
3
|
-
require 'active_support/core_ext/hash/reverse_merge'
|
|
4
2
|
require 'rack/utils'
|
|
5
3
|
|
|
6
4
|
module ActionDispatch
|
|
@@ -13,7 +11,7 @@ module ActionDispatch
|
|
|
13
11
|
|
|
14
12
|
def initialize(env = {})
|
|
15
13
|
env = Rails.application.env_config.merge(env) if defined?(Rails.application) && Rails.application
|
|
16
|
-
super(
|
|
14
|
+
super(default_env.merge(env))
|
|
17
15
|
|
|
18
16
|
self.host = 'test.host'
|
|
19
17
|
self.remote_addr = '0.0.0.0'
|
|
@@ -70,5 +68,11 @@ module ActionDispatch
|
|
|
70
68
|
def cookies
|
|
71
69
|
@cookies ||= {}.with_indifferent_access
|
|
72
70
|
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def default_env
|
|
75
|
+
DEFAULT_ENV
|
|
76
|
+
end
|
|
73
77
|
end
|
|
74
78
|
end
|
data/lib/action_dispatch.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# Copyright (c) 2004-
|
|
2
|
+
# Copyright (c) 2004-2013 David Heinemeier Hansson
|
|
3
3
|
#
|
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
5
|
# a copy of this software and associated documentation files (the
|
|
@@ -21,17 +21,11 @@
|
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
22
|
#++
|
|
23
23
|
|
|
24
|
-
activesupport_path = File.expand_path('../../../activesupport/lib', __FILE__)
|
|
25
|
-
$:.unshift(activesupport_path) if File.directory?(activesupport_path) && !$:.include?(activesupport_path)
|
|
26
|
-
|
|
27
|
-
activemodel_path = File.expand_path('../../../activemodel/lib', __FILE__)
|
|
28
|
-
$:.unshift(activemodel_path) if File.directory?(activemodel_path) && !$:.include?(activemodel_path)
|
|
29
|
-
|
|
30
24
|
require 'active_support'
|
|
31
|
-
require 'active_support/
|
|
25
|
+
require 'active_support/rails'
|
|
26
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
|
32
27
|
|
|
33
28
|
require 'action_pack'
|
|
34
|
-
require 'active_model'
|
|
35
29
|
require 'rack'
|
|
36
30
|
|
|
37
31
|
module Rack
|
|
@@ -41,14 +35,18 @@ end
|
|
|
41
35
|
module ActionDispatch
|
|
42
36
|
extend ActiveSupport::Autoload
|
|
43
37
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
class IllegalStateError < StandardError
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
eager_autoload do
|
|
42
|
+
autoload_under 'http' do
|
|
43
|
+
autoload :Request
|
|
44
|
+
autoload :Response
|
|
45
|
+
end
|
|
47
46
|
end
|
|
48
47
|
|
|
49
48
|
autoload_under 'middleware' do
|
|
50
49
|
autoload :RequestId
|
|
51
|
-
autoload :BestStandardsSupport
|
|
52
50
|
autoload :Callbacks
|
|
53
51
|
autoload :Cookies
|
|
54
52
|
autoload :DebugExceptions
|
|
@@ -59,11 +57,12 @@ module ActionDispatch
|
|
|
59
57
|
autoload :PublicExceptions
|
|
60
58
|
autoload :Reloader
|
|
61
59
|
autoload :RemoteIp
|
|
62
|
-
autoload :Rescue
|
|
63
60
|
autoload :ShowExceptions
|
|
61
|
+
autoload :SSL
|
|
64
62
|
autoload :Static
|
|
65
63
|
end
|
|
66
64
|
|
|
65
|
+
autoload :Journey
|
|
67
66
|
autoload :MiddlewareStack, 'action_dispatch/middleware/stack'
|
|
68
67
|
autoload :Routing
|
|
69
68
|
|
|
@@ -76,6 +75,7 @@ module ActionDispatch
|
|
|
76
75
|
autoload :Parameters
|
|
77
76
|
autoload :ParameterFilter
|
|
78
77
|
autoload :FilterParameters
|
|
78
|
+
autoload :FilterRedirect
|
|
79
79
|
autoload :Upload
|
|
80
80
|
autoload :UploadedFile, 'action_dispatch/http/upload'
|
|
81
81
|
autoload :URL
|
|
@@ -88,11 +88,12 @@ module ActionDispatch
|
|
|
88
88
|
autoload :CacheStore, 'action_dispatch/middleware/session/cache_store'
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
+
mattr_accessor :test_app
|
|
92
|
+
|
|
91
93
|
autoload_under 'testing' do
|
|
92
94
|
autoload :Assertions
|
|
93
95
|
autoload :Integration
|
|
94
96
|
autoload :IntegrationTest, 'action_dispatch/testing/integration'
|
|
95
|
-
autoload :PerformanceTest
|
|
96
97
|
autoload :TestProcess
|
|
97
98
|
autoload :TestRequest
|
|
98
99
|
autoload :TestResponse
|
|
@@ -100,3 +101,8 @@ module ActionDispatch
|
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
autoload :Mime, 'action_dispatch/http/mime_type'
|
|
104
|
+
|
|
105
|
+
ActiveSupport.on_load(:action_view) do
|
|
106
|
+
ActionView::Base.default_formats ||= Mime::SET.symbols
|
|
107
|
+
ActionView::Template::Types.delegate_to Mime
|
|
108
|
+
end
|
data/lib/action_pack/version.rb
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
module ActionPack
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
PRE = nil
|
|
2
|
+
# Returns the version of the currently loaded ActionPack as a Gem::Version
|
|
3
|
+
def self.version
|
|
4
|
+
Gem::Version.new "4.0.0"
|
|
5
|
+
end
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
module VERSION #:nodoc:
|
|
8
|
+
MAJOR, MINOR, TINY, PRE = ActionPack.version.segments
|
|
9
|
+
STRING = ActionPack.version.to_s
|
|
9
10
|
end
|
|
10
11
|
end
|
data/lib/action_pack.rb
CHANGED
data/lib/action_view/base.rb
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
require 'active_support/core_ext/module/attr_internal'
|
|
2
|
-
require 'active_support/core_ext/
|
|
3
|
-
require 'active_support/core_ext/class/attribute'
|
|
4
|
-
require 'active_support/core_ext/array/wrap'
|
|
2
|
+
require 'active_support/core_ext/class/attribute_accessors'
|
|
5
3
|
require 'active_support/ordered_options'
|
|
6
4
|
require 'action_view/log_subscriber'
|
|
7
|
-
require 'active_support/core_ext/module/deprecation'
|
|
8
5
|
|
|
9
6
|
module ActionView #:nodoc:
|
|
10
7
|
# = Action View Base
|
|
11
8
|
#
|
|
12
|
-
# Action View templates can be written in several ways. If the template file has a <tt>.erb</tt> extension then it uses a mixture of
|
|
9
|
+
# Action View templates can be written in several ways. If the template file has a <tt>.erb</tt> extension then it uses a mixture of ERB
|
|
13
10
|
# (included in Ruby) and HTML. If the template file has a <tt>.builder</tt> extension then Jim Weirich's Builder::XmlMarkup library is used.
|
|
14
11
|
#
|
|
15
12
|
# == ERB
|
|
@@ -58,7 +55,7 @@ module ActionView #:nodoc:
|
|
|
58
55
|
#
|
|
59
56
|
# You can pass local variables to sub templates by using a hash with the variable names as keys and the objects as values:
|
|
60
57
|
#
|
|
61
|
-
# <%= render "shared/header", { :
|
|
58
|
+
# <%= render "shared/header", { headline: "Welcome", person: person } %>
|
|
62
59
|
#
|
|
63
60
|
# These can now be accessed in <tt>shared/header</tt> with:
|
|
64
61
|
#
|
|
@@ -141,14 +138,22 @@ module ActionView #:nodoc:
|
|
|
141
138
|
# How to complete the streaming when an exception occurs.
|
|
142
139
|
# This is our best guess: first try to close the attribute, then the tag.
|
|
143
140
|
cattr_accessor :streaming_completion_on_exception
|
|
144
|
-
@@streaming_completion_on_exception = %("><script
|
|
141
|
+
@@streaming_completion_on_exception = %("><script>window.location = "/500.html"</script></html>)
|
|
142
|
+
|
|
143
|
+
# Specify whether rendering within namespaced controllers should prefix
|
|
144
|
+
# the partial paths for ActiveModel objects with the namespace.
|
|
145
|
+
# (e.g., an Admin::PostsController would render @post using /admin/posts/_post.erb)
|
|
146
|
+
cattr_accessor :prefix_partial_path_with_controller_namespace
|
|
147
|
+
@@prefix_partial_path_with_controller_namespace = true
|
|
148
|
+
|
|
149
|
+
# Specify default_formats that can be rendered.
|
|
150
|
+
cattr_accessor :default_formats
|
|
145
151
|
|
|
146
|
-
class_attribute :helpers
|
|
147
152
|
class_attribute :_routes
|
|
153
|
+
class_attribute :logger
|
|
148
154
|
|
|
149
155
|
class << self
|
|
150
156
|
delegate :erb_trim_mode=, :to => 'ActionView::Template::Handlers::ERB'
|
|
151
|
-
delegate :logger, :to => 'ActionController::Base', :allow_nil => true
|
|
152
157
|
|
|
153
158
|
def cache_template_loading
|
|
154
159
|
ActionView::Resolver.caching?
|
|
@@ -158,31 +163,9 @@ module ActionView #:nodoc:
|
|
|
158
163
|
ActionView::Resolver.caching = value
|
|
159
164
|
end
|
|
160
165
|
|
|
161
|
-
def process_view_paths(value)
|
|
162
|
-
value.is_a?(PathSet) ?
|
|
163
|
-
value.dup : ActionView::PathSet.new(Array.wrap(value))
|
|
164
|
-
end
|
|
165
|
-
deprecate :process_view_paths
|
|
166
|
-
|
|
167
166
|
def xss_safe? #:nodoc:
|
|
168
167
|
true
|
|
169
168
|
end
|
|
170
|
-
|
|
171
|
-
# This method receives routes and helpers from the controller
|
|
172
|
-
# and return a subclass ready to be used as view context.
|
|
173
|
-
def prepare(routes, helpers) #:nodoc:
|
|
174
|
-
Class.new(self) do
|
|
175
|
-
if routes
|
|
176
|
-
include routes.url_helpers
|
|
177
|
-
include routes.mounted_helpers
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
if helpers
|
|
181
|
-
include helpers
|
|
182
|
-
self.helpers = helpers
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
169
|
end
|
|
187
170
|
|
|
188
171
|
attr_accessor :view_renderer
|
|
@@ -198,11 +181,9 @@ module ActionView #:nodoc:
|
|
|
198
181
|
def initialize(context = nil, assigns = {}, controller = nil, formats = nil) #:nodoc:
|
|
199
182
|
@_config = ActiveSupport::InheritableOptions.new
|
|
200
183
|
|
|
201
|
-
# Handle all these for backwards compatibility.
|
|
202
|
-
# TODO Provide a new API for AV::Base and deprecate this one.
|
|
203
184
|
if context.is_a?(ActionView::Renderer)
|
|
204
185
|
@view_renderer = context
|
|
205
|
-
|
|
186
|
+
else
|
|
206
187
|
lookup_context = context.is_a?(ActionView::LookupContext) ?
|
|
207
188
|
context : ActionView::LookupContext.new(context)
|
|
208
189
|
lookup_context.formats = formats if formats
|
data/lib/action_view/buffers.rb
CHANGED
|
@@ -4,13 +4,19 @@ module ActionView
|
|
|
4
4
|
class OutputBuffer < ActiveSupport::SafeBuffer #:nodoc:
|
|
5
5
|
def initialize(*)
|
|
6
6
|
super
|
|
7
|
-
encode!
|
|
7
|
+
encode!
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def <<(value)
|
|
11
|
+
return self if value.nil?
|
|
11
12
|
super(value.to_s)
|
|
12
13
|
end
|
|
13
14
|
alias :append= :<<
|
|
15
|
+
|
|
16
|
+
def safe_concat(value)
|
|
17
|
+
return self if value.nil?
|
|
18
|
+
super(value.to_s)
|
|
19
|
+
end
|
|
14
20
|
alias :safe_append= :safe_concat
|
|
15
21
|
end
|
|
16
22
|
|
data/lib/action_view/context.rb
CHANGED
|
@@ -5,7 +5,7 @@ module ActionView
|
|
|
5
5
|
|
|
6
6
|
# = Action View Context
|
|
7
7
|
#
|
|
8
|
-
# Action View contexts are supplied to Action Controller to render template.
|
|
8
|
+
# Action View contexts are supplied to Action Controller to render a template.
|
|
9
9
|
# The default Action View context is ActionView::Base.
|
|
10
10
|
#
|
|
11
11
|
# In order to work with ActionController, a Context must just include this module.
|
|
@@ -25,12 +25,12 @@ module ActionView
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# Encapsulates the interaction with the view flow so it
|
|
28
|
-
# returns the correct buffer on yield
|
|
29
|
-
#
|
|
28
|
+
# returns the correct buffer on +yield+. This is usually
|
|
29
|
+
# overwritten by helpers to add more behavior.
|
|
30
30
|
# :api: plugin
|
|
31
31
|
def _layout_for(name=nil)
|
|
32
32
|
name ||= :layout
|
|
33
33
|
view_flow.get(name).html_safe
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
|
-
end
|
|
36
|
+
end
|