actionpack 3.2.19 → 4.2.11.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (244) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +412 -503
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +11 -294
  5. data/lib/abstract_controller/asset_paths.rb +2 -2
  6. data/lib/abstract_controller/base.rb +52 -18
  7. data/lib/abstract_controller/callbacks.rb +87 -89
  8. data/lib/abstract_controller/collector.rb +17 -3
  9. data/lib/abstract_controller/helpers.rb +41 -14
  10. data/lib/abstract_controller/logger.rb +1 -2
  11. data/lib/abstract_controller/railties/routes_helpers.rb +3 -3
  12. data/lib/abstract_controller/rendering.rb +65 -118
  13. data/lib/abstract_controller/translation.rb +16 -1
  14. data/lib/abstract_controller/url_for.rb +7 -7
  15. data/lib/abstract_controller.rb +2 -10
  16. data/lib/action_controller/base.rb +61 -28
  17. data/lib/action_controller/caching/fragments.rb +30 -54
  18. data/lib/action_controller/caching.rb +38 -35
  19. data/lib/action_controller/log_subscriber.rb +35 -18
  20. data/lib/action_controller/metal/conditional_get.rb +103 -34
  21. data/lib/action_controller/metal/data_streaming.rb +20 -26
  22. data/lib/action_controller/metal/etag_with_template_digest.rb +50 -0
  23. data/lib/action_controller/metal/exceptions.rb +19 -6
  24. data/lib/action_controller/metal/flash.rb +41 -9
  25. data/lib/action_controller/metal/force_ssl.rb +70 -12
  26. data/lib/action_controller/metal/head.rb +30 -7
  27. data/lib/action_controller/metal/helpers.rb +11 -11
  28. data/lib/action_controller/metal/hide_actions.rb +0 -1
  29. data/lib/action_controller/metal/http_authentication.rb +140 -94
  30. data/lib/action_controller/metal/implicit_render.rb +1 -1
  31. data/lib/action_controller/metal/instrumentation.rb +11 -7
  32. data/lib/action_controller/metal/live.rb +328 -0
  33. data/lib/action_controller/metal/mime_responds.rb +161 -152
  34. data/lib/action_controller/metal/params_wrapper.rb +126 -81
  35. data/lib/action_controller/metal/rack_delegation.rb +10 -4
  36. data/lib/action_controller/metal/redirecting.rb +44 -41
  37. data/lib/action_controller/metal/renderers.rb +48 -19
  38. data/lib/action_controller/metal/rendering.rb +46 -11
  39. data/lib/action_controller/metal/request_forgery_protection.rb +250 -29
  40. data/lib/action_controller/metal/streaming.rb +30 -38
  41. data/lib/action_controller/metal/strong_parameters.rb +669 -0
  42. data/lib/action_controller/metal/testing.rb +12 -18
  43. data/lib/action_controller/metal/url_for.rb +31 -29
  44. data/lib/action_controller/metal.rb +31 -40
  45. data/lib/action_controller/model_naming.rb +12 -0
  46. data/lib/action_controller/railtie.rb +38 -18
  47. data/lib/action_controller/railties/helpers.rb +22 -0
  48. data/lib/action_controller/test_case.rb +359 -173
  49. data/lib/action_controller.rb +9 -16
  50. data/lib/action_dispatch/http/cache.rb +64 -11
  51. data/lib/action_dispatch/http/filter_parameters.rb +20 -10
  52. data/lib/action_dispatch/http/filter_redirect.rb +38 -0
  53. data/lib/action_dispatch/http/headers.rb +85 -17
  54. data/lib/action_dispatch/http/mime_negotiation.rb +55 -5
  55. data/lib/action_dispatch/http/mime_type.rb +167 -114
  56. data/lib/action_dispatch/http/mime_types.rb +2 -1
  57. data/lib/action_dispatch/http/parameter_filter.rb +44 -46
  58. data/lib/action_dispatch/http/parameters.rb +30 -46
  59. data/lib/action_dispatch/http/rack_cache.rb +2 -3
  60. data/lib/action_dispatch/http/request.rb +108 -45
  61. data/lib/action_dispatch/http/response.rb +247 -48
  62. data/lib/action_dispatch/http/upload.rb +60 -29
  63. data/lib/action_dispatch/http/url.rb +135 -45
  64. data/lib/action_dispatch/journey/backwards.rb +5 -0
  65. data/lib/action_dispatch/journey/formatter.rb +166 -0
  66. data/lib/action_dispatch/journey/gtg/builder.rb +162 -0
  67. data/lib/action_dispatch/journey/gtg/simulator.rb +47 -0
  68. data/lib/action_dispatch/journey/gtg/transition_table.rb +157 -0
  69. data/lib/action_dispatch/journey/nfa/builder.rb +76 -0
  70. data/lib/action_dispatch/journey/nfa/dot.rb +36 -0
  71. data/lib/action_dispatch/journey/nfa/simulator.rb +47 -0
  72. data/lib/action_dispatch/journey/nfa/transition_table.rb +163 -0
  73. data/lib/action_dispatch/journey/nodes/node.rb +128 -0
  74. data/lib/action_dispatch/journey/parser.rb +198 -0
  75. data/lib/action_dispatch/journey/parser.y +49 -0
  76. data/lib/action_dispatch/journey/parser_extras.rb +23 -0
  77. data/lib/action_dispatch/journey/path/pattern.rb +193 -0
  78. data/lib/action_dispatch/journey/route.rb +125 -0
  79. data/lib/action_dispatch/journey/router/strexp.rb +27 -0
  80. data/lib/action_dispatch/journey/router/utils.rb +93 -0
  81. data/lib/action_dispatch/journey/router.rb +144 -0
  82. data/lib/action_dispatch/journey/routes.rb +80 -0
  83. data/lib/action_dispatch/journey/scanner.rb +61 -0
  84. data/lib/action_dispatch/journey/visitors.rb +221 -0
  85. data/lib/action_dispatch/journey/visualizer/fsm.css +30 -0
  86. data/lib/action_dispatch/journey/visualizer/fsm.js +134 -0
  87. data/lib/action_dispatch/journey/visualizer/index.html.erb +52 -0
  88. data/lib/action_dispatch/journey.rb +5 -0
  89. data/lib/action_dispatch/middleware/callbacks.rb +16 -11
  90. data/lib/action_dispatch/middleware/cookies.rb +346 -125
  91. data/lib/action_dispatch/middleware/debug_exceptions.rb +52 -24
  92. data/lib/action_dispatch/middleware/exception_wrapper.rb +75 -9
  93. data/lib/action_dispatch/middleware/flash.rb +85 -72
  94. data/lib/action_dispatch/middleware/params_parser.rb +16 -31
  95. data/lib/action_dispatch/middleware/public_exceptions.rb +39 -14
  96. data/lib/action_dispatch/middleware/reloader.rb +16 -7
  97. data/lib/action_dispatch/middleware/remote_ip.rb +132 -40
  98. data/lib/action_dispatch/middleware/request_id.rb +3 -7
  99. data/lib/action_dispatch/middleware/session/abstract_store.rb +22 -20
  100. data/lib/action_dispatch/middleware/session/cache_store.rb +3 -3
  101. data/lib/action_dispatch/middleware/session/cookie_store.rb +84 -29
  102. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +8 -3
  103. data/lib/action_dispatch/middleware/show_exceptions.rb +15 -44
  104. data/lib/action_dispatch/middleware/ssl.rb +72 -0
  105. data/lib/action_dispatch/middleware/stack.rb +6 -1
  106. data/lib/action_dispatch/middleware/static.rb +80 -23
  107. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb +34 -0
  108. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb +23 -0
  109. data/lib/action_dispatch/middleware/templates/rescues/_source.erb +27 -0
  110. data/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb +52 -0
  111. data/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb +9 -0
  112. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb +16 -0
  113. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.text.erb +9 -0
  114. data/lib/action_dispatch/middleware/templates/rescues/layout.erb +133 -5
  115. data/lib/action_dispatch/middleware/templates/rescues/missing_template.html.erb +11 -0
  116. data/lib/action_dispatch/middleware/templates/rescues/missing_template.text.erb +3 -0
  117. data/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb +32 -0
  118. data/lib/action_dispatch/middleware/templates/rescues/routing_error.text.erb +11 -0
  119. data/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb +20 -0
  120. data/lib/action_dispatch/middleware/templates/rescues/template_error.text.erb +7 -0
  121. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.html.erb +6 -0
  122. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.text.erb +3 -0
  123. data/lib/action_dispatch/middleware/templates/routes/_route.html.erb +16 -0
  124. data/lib/action_dispatch/middleware/templates/routes/_table.html.erb +200 -0
  125. data/lib/action_dispatch/railtie.rb +19 -6
  126. data/lib/action_dispatch/request/session.rb +193 -0
  127. data/lib/action_dispatch/request/utils.rb +35 -0
  128. data/lib/action_dispatch/routing/endpoint.rb +10 -0
  129. data/lib/action_dispatch/routing/inspector.rb +234 -0
  130. data/lib/action_dispatch/routing/mapper.rb +897 -436
  131. data/lib/action_dispatch/routing/polymorphic_routes.rb +213 -92
  132. data/lib/action_dispatch/routing/redirection.rb +97 -37
  133. data/lib/action_dispatch/routing/route_set.rb +432 -239
  134. data/lib/action_dispatch/routing/routes_proxy.rb +7 -4
  135. data/lib/action_dispatch/routing/url_for.rb +63 -34
  136. data/lib/action_dispatch/routing.rb +57 -89
  137. data/lib/action_dispatch/testing/assertions/dom.rb +2 -36
  138. data/lib/action_dispatch/testing/assertions/response.rb +24 -38
  139. data/lib/action_dispatch/testing/assertions/routing.rb +55 -54
  140. data/lib/action_dispatch/testing/assertions/selector.rb +2 -434
  141. data/lib/action_dispatch/testing/assertions/tag.rb +2 -137
  142. data/lib/action_dispatch/testing/assertions.rb +11 -7
  143. data/lib/action_dispatch/testing/integration.rb +88 -72
  144. data/lib/action_dispatch/testing/test_process.rb +9 -6
  145. data/lib/action_dispatch/testing/test_request.rb +13 -9
  146. data/lib/action_dispatch/testing/test_response.rb +1 -5
  147. data/lib/action_dispatch.rb +24 -21
  148. data/lib/action_pack/gem_version.rb +15 -0
  149. data/lib/action_pack/version.rb +5 -7
  150. data/lib/action_pack.rb +1 -1
  151. metadata +181 -292
  152. data/lib/abstract_controller/layouts.rb +0 -423
  153. data/lib/abstract_controller/view_paths.rb +0 -96
  154. data/lib/action_controller/caching/actions.rb +0 -185
  155. data/lib/action_controller/caching/pages.rb +0 -187
  156. data/lib/action_controller/caching/sweeping.rb +0 -97
  157. data/lib/action_controller/deprecated/integration_test.rb +0 -2
  158. data/lib/action_controller/deprecated/performance_test.rb +0 -1
  159. data/lib/action_controller/deprecated.rb +0 -3
  160. data/lib/action_controller/metal/compatibility.rb +0 -65
  161. data/lib/action_controller/metal/responder.rb +0 -286
  162. data/lib/action_controller/metal/session_management.rb +0 -14
  163. data/lib/action_controller/railties/paths.rb +0 -25
  164. data/lib/action_controller/record_identifier.rb +0 -85
  165. data/lib/action_controller/vendor/html-scanner/html/document.rb +0 -68
  166. data/lib/action_controller/vendor/html-scanner/html/node.rb +0 -532
  167. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +0 -177
  168. data/lib/action_controller/vendor/html-scanner/html/selector.rb +0 -830
  169. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +0 -107
  170. data/lib/action_controller/vendor/html-scanner/html/version.rb +0 -11
  171. data/lib/action_controller/vendor/html-scanner.rb +0 -20
  172. data/lib/action_dispatch/middleware/best_standards_support.rb +0 -30
  173. data/lib/action_dispatch/middleware/body_proxy.rb +0 -30
  174. data/lib/action_dispatch/middleware/head.rb +0 -18
  175. data/lib/action_dispatch/middleware/rescue.rb +0 -26
  176. data/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb +0 -31
  177. data/lib/action_dispatch/middleware/templates/rescues/_trace.erb +0 -26
  178. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +0 -10
  179. data/lib/action_dispatch/middleware/templates/rescues/missing_template.erb +0 -2
  180. data/lib/action_dispatch/middleware/templates/rescues/routing_error.erb +0 -15
  181. data/lib/action_dispatch/middleware/templates/rescues/template_error.erb +0 -17
  182. data/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb +0 -2
  183. data/lib/action_dispatch/testing/performance_test.rb +0 -10
  184. data/lib/action_view/asset_paths.rb +0 -142
  185. data/lib/action_view/base.rb +0 -220
  186. data/lib/action_view/buffers.rb +0 -43
  187. data/lib/action_view/context.rb +0 -36
  188. data/lib/action_view/flows.rb +0 -79
  189. data/lib/action_view/helpers/active_model_helper.rb +0 -50
  190. data/lib/action_view/helpers/asset_paths.rb +0 -7
  191. data/lib/action_view/helpers/asset_tag_helper.rb +0 -457
  192. data/lib/action_view/helpers/asset_tag_helpers/asset_include_tag.rb +0 -146
  193. data/lib/action_view/helpers/asset_tag_helpers/asset_paths.rb +0 -93
  194. data/lib/action_view/helpers/asset_tag_helpers/javascript_tag_helpers.rb +0 -193
  195. data/lib/action_view/helpers/asset_tag_helpers/stylesheet_tag_helpers.rb +0 -148
  196. data/lib/action_view/helpers/atom_feed_helper.rb +0 -200
  197. data/lib/action_view/helpers/cache_helper.rb +0 -64
  198. data/lib/action_view/helpers/capture_helper.rb +0 -203
  199. data/lib/action_view/helpers/controller_helper.rb +0 -25
  200. data/lib/action_view/helpers/csrf_helper.rb +0 -32
  201. data/lib/action_view/helpers/date_helper.rb +0 -1062
  202. data/lib/action_view/helpers/debug_helper.rb +0 -40
  203. data/lib/action_view/helpers/form_helper.rb +0 -1486
  204. data/lib/action_view/helpers/form_options_helper.rb +0 -658
  205. data/lib/action_view/helpers/form_tag_helper.rb +0 -685
  206. data/lib/action_view/helpers/javascript_helper.rb +0 -110
  207. data/lib/action_view/helpers/number_helper.rb +0 -622
  208. data/lib/action_view/helpers/output_safety_helper.rb +0 -38
  209. data/lib/action_view/helpers/record_tag_helper.rb +0 -111
  210. data/lib/action_view/helpers/rendering_helper.rb +0 -90
  211. data/lib/action_view/helpers/sanitize_helper.rb +0 -259
  212. data/lib/action_view/helpers/tag_helper.rb +0 -160
  213. data/lib/action_view/helpers/text_helper.rb +0 -426
  214. data/lib/action_view/helpers/translation_helper.rb +0 -91
  215. data/lib/action_view/helpers/url_helper.rb +0 -693
  216. data/lib/action_view/helpers.rb +0 -60
  217. data/lib/action_view/locale/en.yml +0 -160
  218. data/lib/action_view/log_subscriber.rb +0 -28
  219. data/lib/action_view/lookup_context.rb +0 -254
  220. data/lib/action_view/path_set.rb +0 -89
  221. data/lib/action_view/railtie.rb +0 -55
  222. data/lib/action_view/renderer/abstract_renderer.rb +0 -41
  223. data/lib/action_view/renderer/partial_renderer.rb +0 -415
  224. data/lib/action_view/renderer/renderer.rb +0 -54
  225. data/lib/action_view/renderer/streaming_template_renderer.rb +0 -106
  226. data/lib/action_view/renderer/template_renderer.rb +0 -94
  227. data/lib/action_view/template/error.rb +0 -128
  228. data/lib/action_view/template/handlers/builder.rb +0 -26
  229. data/lib/action_view/template/handlers/erb.rb +0 -125
  230. data/lib/action_view/template/handlers.rb +0 -50
  231. data/lib/action_view/template/resolver.rb +0 -272
  232. data/lib/action_view/template/text.rb +0 -30
  233. data/lib/action_view/template.rb +0 -337
  234. data/lib/action_view/test_case.rb +0 -245
  235. data/lib/action_view/testing/resolvers.rb +0 -50
  236. data/lib/action_view.rb +0 -84
  237. data/lib/sprockets/assets.rake +0 -99
  238. data/lib/sprockets/bootstrap.rb +0 -37
  239. data/lib/sprockets/compressors.rb +0 -83
  240. data/lib/sprockets/helpers/isolated_helper.rb +0 -13
  241. data/lib/sprockets/helpers/rails_helper.rb +0 -182
  242. data/lib/sprockets/helpers.rb +0 -6
  243. data/lib/sprockets/railtie.rb +0 -62
  244. data/lib/sprockets/static_compiler.rb +0 -56
@@ -1,220 +0,0 @@
1
- require 'active_support/core_ext/module/attr_internal'
2
- require 'active_support/core_ext/module/delegation'
3
- require 'active_support/core_ext/class/attribute'
4
- require 'active_support/core_ext/array/wrap'
5
- require 'active_support/ordered_options'
6
- require 'action_view/log_subscriber'
7
- require 'active_support/core_ext/module/deprecation'
8
-
9
- module ActionView #:nodoc:
10
- # = Action View Base
11
- #
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 ERb
13
- # (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
- #
15
- # == ERB
16
- #
17
- # You trigger ERB by using embeddings such as <% %>, <% -%>, and <%= %>. The <%= %> tag set is used when you want output. Consider the
18
- # following loop for names:
19
- #
20
- # <b>Names of all the people</b>
21
- # <% @people.each do |person| %>
22
- # Name: <%= person.name %><br/>
23
- # <% end %>
24
- #
25
- # The loop is setup in regular embedding tags <% %> and the name is written using the output embedding tag <%= %>. Note that this
26
- # is not just a usage suggestion. Regular output functions like print or puts won't work with ERB templates. So this would be wrong:
27
- #
28
- # <%# WRONG %>
29
- # Hi, Mr. <% puts "Frodo" %>
30
- #
31
- # If you absolutely must write from within a function use +concat+.
32
- #
33
- # <%- and -%> suppress leading and trailing whitespace, including the trailing newline, and can be used interchangeably with <% and %>.
34
- #
35
- # === Using sub templates
36
- #
37
- # Using sub templates allows you to sidestep tedious replication and extract common display structures in shared templates. The
38
- # classic example is the use of a header and footer (even though the Action Pack-way would be to use Layouts):
39
- #
40
- # <%= render "shared/header" %>
41
- # Something really specific and terrific
42
- # <%= render "shared/footer" %>
43
- #
44
- # As you see, we use the output embeddings for the render methods. The render call itself will just return a string holding the
45
- # result of the rendering. The output embedding writes it to the current template.
46
- #
47
- # But you don't have to restrict yourself to static includes. Templates can share variables amongst themselves by using instance
48
- # variables defined using the regular embedding tags. Like this:
49
- #
50
- # <% @page_title = "A Wonderful Hello" %>
51
- # <%= render "shared/header" %>
52
- #
53
- # Now the header can pick up on the <tt>@page_title</tt> variable and use it for outputting a title tag:
54
- #
55
- # <title><%= @page_title %></title>
56
- #
57
- # === Passing local variables to sub templates
58
- #
59
- # You can pass local variables to sub templates by using a hash with the variable names as keys and the objects as values:
60
- #
61
- # <%= render "shared/header", { :headline => "Welcome", :person => person } %>
62
- #
63
- # These can now be accessed in <tt>shared/header</tt> with:
64
- #
65
- # Headline: <%= headline %>
66
- # First name: <%= person.first_name %>
67
- #
68
- # If you need to find out whether a certain local variable has been assigned a value in a particular render call,
69
- # you need to use the following pattern:
70
- #
71
- # <% if local_assigns.has_key? :headline %>
72
- # Headline: <%= headline %>
73
- # <% end %>
74
- #
75
- # Testing using <tt>defined? headline</tt> will not work. This is an implementation restriction.
76
- #
77
- # === Template caching
78
- #
79
- # By default, Rails will compile each template to a method in order to render it. When you alter a template,
80
- # Rails will check the file's modification time and recompile it in development mode.
81
- #
82
- # == Builder
83
- #
84
- # Builder templates are a more programmatic alternative to ERB. They are especially useful for generating XML content. An XmlMarkup object
85
- # named +xml+ is automatically made available to templates with a <tt>.builder</tt> extension.
86
- #
87
- # Here are some basic examples:
88
- #
89
- # xml.em("emphasized") # => <em>emphasized</em>
90
- # xml.em { xml.b("emph & bold") } # => <em><b>emph &amp; bold</b></em>
91
- # xml.a("A Link", "href" => "http://onestepback.org") # => <a href="http://onestepback.org">A Link</a>
92
- # xml.target("name" => "compile", "option" => "fast") # => <target option="fast" name="compile"\>
93
- # # NOTE: order of attributes is not specified.
94
- #
95
- # Any method with a block will be treated as an XML markup tag with nested markup in the block. For example, the following:
96
- #
97
- # xml.div do
98
- # xml.h1(@person.name)
99
- # xml.p(@person.bio)
100
- # end
101
- #
102
- # would produce something like:
103
- #
104
- # <div>
105
- # <h1>David Heinemeier Hansson</h1>
106
- # <p>A product of Danish Design during the Winter of '79...</p>
107
- # </div>
108
- #
109
- # A full-length RSS example actually used on Basecamp:
110
- #
111
- # xml.rss("version" => "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/") do
112
- # xml.channel do
113
- # xml.title(@feed_title)
114
- # xml.link(@url)
115
- # xml.description "Basecamp: Recent items"
116
- # xml.language "en-us"
117
- # xml.ttl "40"
118
- #
119
- # @recent_items.each do |item|
120
- # xml.item do
121
- # xml.title(item_title(item))
122
- # xml.description(item_description(item)) if item_description(item)
123
- # xml.pubDate(item_pubDate(item))
124
- # xml.guid(@person.firm.account.url + @recent_items.url(item))
125
- # xml.link(@person.firm.account.url + @recent_items.url(item))
126
- #
127
- # xml.tag!("dc:creator", item.author_name) if item_has_creator?(item)
128
- # end
129
- # end
130
- # end
131
- # end
132
- #
133
- # More builder documentation can be found at http://builder.rubyforge.org.
134
- class Base
135
- include Helpers, ::ERB::Util, Context
136
-
137
- # Specify the proc used to decorate input tags that refer to attributes with errors.
138
- cattr_accessor :field_error_proc
139
- @@field_error_proc = Proc.new{ |html_tag, instance| "<div class=\"field_with_errors\">#{html_tag}</div>".html_safe }
140
-
141
- # How to complete the streaming when an exception occurs.
142
- # This is our best guess: first try to close the attribute, then the tag.
143
- cattr_accessor :streaming_completion_on_exception
144
- @@streaming_completion_on_exception = %("><script type="text/javascript">window.location = "/500.html"</script></html>)
145
-
146
- class_attribute :helpers
147
- class_attribute :_routes
148
-
149
- class << self
150
- delegate :erb_trim_mode=, :to => 'ActionView::Template::Handlers::ERB'
151
- delegate :logger, :to => 'ActionController::Base', :allow_nil => true
152
-
153
- def cache_template_loading
154
- ActionView::Resolver.caching?
155
- end
156
-
157
- def cache_template_loading=(value)
158
- ActionView::Resolver.caching = value
159
- end
160
-
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
- def xss_safe? #:nodoc:
168
- true
169
- 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
- end
187
-
188
- attr_accessor :view_renderer
189
- attr_internal :config, :assigns
190
-
191
- delegate :lookup_context, :to => :view_renderer
192
- delegate :formats, :formats=, :locale, :locale=, :view_paths, :view_paths=, :to => :lookup_context
193
-
194
- def assign(new_assigns) # :nodoc:
195
- @_assigns = new_assigns.each { |key, value| instance_variable_set("@#{key}", value) }
196
- end
197
-
198
- def initialize(context = nil, assigns = {}, controller = nil, formats = nil) #:nodoc:
199
- @_config = ActiveSupport::InheritableOptions.new
200
-
201
- # Handle all these for backwards compatibility.
202
- # TODO Provide a new API for AV::Base and deprecate this one.
203
- if context.is_a?(ActionView::Renderer)
204
- @view_renderer = context
205
- elsif
206
- lookup_context = context.is_a?(ActionView::LookupContext) ?
207
- context : ActionView::LookupContext.new(context)
208
- lookup_context.formats = formats if formats
209
- lookup_context.prefixes = controller._prefixes if controller
210
- @view_renderer = ActionView::Renderer.new(lookup_context)
211
- end
212
-
213
- assign(assigns)
214
- assign_controller(controller)
215
- _prepare_context
216
- end
217
-
218
- ActiveSupport.run_load_hooks(:action_view, self)
219
- end
220
- end
@@ -1,43 +0,0 @@
1
- require 'active_support/core_ext/string/output_safety'
2
-
3
- module ActionView
4
- class OutputBuffer < ActiveSupport::SafeBuffer #:nodoc:
5
- def initialize(*)
6
- super
7
- encode! if encoding_aware?
8
- end
9
-
10
- def <<(value)
11
- super(value.to_s)
12
- end
13
- alias :append= :<<
14
- alias :safe_append= :safe_concat
15
- end
16
-
17
- class StreamingBuffer #:nodoc:
18
- def initialize(block)
19
- @block = block
20
- end
21
-
22
- def <<(value)
23
- value = value.to_s
24
- value = ERB::Util.h(value) unless value.html_safe?
25
- @block.call(value)
26
- end
27
- alias :concat :<<
28
- alias :append= :<<
29
-
30
- def safe_concat(value)
31
- @block.call(value.to_s)
32
- end
33
- alias :safe_append= :safe_concat
34
-
35
- def html_safe?
36
- true
37
- end
38
-
39
- def html_safe
40
- self
41
- end
42
- end
43
- end
@@ -1,36 +0,0 @@
1
- module ActionView
2
- module CompiledTemplates #:nodoc:
3
- # holds compiled template code
4
- end
5
-
6
- # = Action View Context
7
- #
8
- # Action View contexts are supplied to Action Controller to render template.
9
- # The default Action View context is ActionView::Base.
10
- #
11
- # In order to work with ActionController, a Context must just include this module.
12
- # The initialization of the variables used by the context (@output_buffer, @view_flow,
13
- # and @virtual_path) is responsibility of the object that includes this module
14
- # (although you can call _prepare_context defined below).
15
- module Context
16
- include CompiledTemplates
17
- attr_accessor :output_buffer, :view_flow
18
-
19
- # Prepares the context by setting the appropriate instance variables.
20
- # :api: plugin
21
- def _prepare_context
22
- @view_flow = OutputFlow.new
23
- @output_buffer = nil
24
- @virtual_path = nil
25
- end
26
-
27
- # Encapsulates the interaction with the view flow so it
28
- # returns the correct buffer on yield. This is usually
29
- # overwriten by helpers to add more behavior.
30
- # :api: plugin
31
- def _layout_for(name=nil)
32
- name ||= :layout
33
- view_flow.get(name).html_safe
34
- end
35
- end
36
- end
@@ -1,79 +0,0 @@
1
- require 'active_support/core_ext/string/output_safety'
2
-
3
- module ActionView
4
- class OutputFlow #:nodoc:
5
- attr_reader :content
6
-
7
- def initialize
8
- @content = Hash.new { |h,k| h[k] = ActiveSupport::SafeBuffer.new }
9
- end
10
-
11
- # Called by _layout_for to read stored values.
12
- def get(key)
13
- @content[key]
14
- end
15
-
16
- # Called by each renderer object to set the layout contents.
17
- def set(key, value)
18
- @content[key] = value
19
- end
20
-
21
- # Called by content_for
22
- def append(key, value)
23
- @content[key] << value
24
- end
25
-
26
- # Called by provide
27
- def append!(key, value)
28
- @content[key] << value
29
- end
30
- end
31
-
32
- class StreamingFlow < OutputFlow #:nodoc:
33
- def initialize(view, fiber)
34
- @view = view
35
- @parent = nil
36
- @child = view.output_buffer
37
- @content = view.view_flow.content
38
- @fiber = fiber
39
- @root = Fiber.current.object_id
40
- end
41
-
42
- # Try to get an stored content. If the content
43
- # is not available and we are inside the layout
44
- # fiber, we set that we are waiting for the given
45
- # key and yield.
46
- def get(key)
47
- return super if @content.key?(key)
48
-
49
- if inside_fiber?
50
- view = @view
51
-
52
- begin
53
- @waiting_for = key
54
- view.output_buffer, @parent = @child, view.output_buffer
55
- Fiber.yield
56
- ensure
57
- @waiting_for = nil
58
- view.output_buffer, @child = @parent, view.output_buffer
59
- end
60
- end
61
-
62
- super
63
- end
64
-
65
- # Appends the contents for the given key. This is called
66
- # by provides and resumes back to the fiber if it is
67
- # the key it is waiting for.
68
- def append!(key, value)
69
- super
70
- @fiber.resume if @waiting_for == key
71
- end
72
-
73
- private
74
-
75
- def inside_fiber?
76
- Fiber.current.object_id != @root
77
- end
78
- end
79
- end
@@ -1,50 +0,0 @@
1
- require 'active_support/core_ext/class/attribute_accessors'
2
- require 'active_support/core_ext/enumerable'
3
- require 'active_support/core_ext/object/blank'
4
-
5
- module ActionView
6
- # = Active Model Helpers
7
- module Helpers
8
- module ActiveModelHelper
9
- end
10
-
11
- module ActiveModelInstanceTag
12
- def object
13
- @active_model_object ||= begin
14
- object = super
15
- object.respond_to?(:to_model) ? object.to_model : object
16
- end
17
- end
18
-
19
- %w(content_tag to_date_select_tag to_datetime_select_tag to_time_select_tag).each do |meth|
20
- module_eval "def #{meth}(*) error_wrapping(super) end", __FILE__, __LINE__
21
- end
22
-
23
- def tag(type, options, *)
24
- tag_generate_errors?(options) ? error_wrapping(super) : super
25
- end
26
-
27
- def error_wrapping(html_tag)
28
- if object_has_errors?
29
- Base.field_error_proc.call(html_tag, self)
30
- else
31
- html_tag
32
- end
33
- end
34
-
35
- def error_message
36
- object.errors[@method_name]
37
- end
38
-
39
- private
40
-
41
- def object_has_errors?
42
- object.respond_to?(:errors) && object.errors.respond_to?(:full_messages) && error_message.any?
43
- end
44
-
45
- def tag_generate_errors?(options)
46
- options['type'] != 'hidden'
47
- end
48
- end
49
- end
50
- end
@@ -1,7 +0,0 @@
1
- ActiveSupport::Deprecation.warn "ActionView::Helpers::AssetPaths is deprecated. Please use ActionView::AssetPaths instead."
2
-
3
- module ActionView
4
- module Helpers
5
- AssetPaths = ::ActionView::AssetPaths
6
- end
7
- end