Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

root/tags/rel_0-14-4/actionpack/CHANGELOG

Revision 3250, 102.8 kB (checked in by david, 3 years ago)

Prepare versions for release

Line 
1 *1.11.1* (December 7th, 2005)
2
3 * More robust relative url root discovery for SCGI compatibility.  This solves the 'SCGI routes problem' -- you no longer need to prefix all your routes with the name of the SCGI mountpoint.  #3070 [Dave Ringoen]
4
5 * Fix docs for text_area_tag. #3083. [Christopher Cotton]
6  
7 * Make ActionController's render honor the :locals option when rendering a :file. #1665. [Emanuel Borsboom, Marcel Molina Jr.]
8
9 * Don't put flash in session if sessions are disabled.  [Jeremy Kemper]
10
11 * Strip out trailing &_= for raw post bodies. Closes #2868. [Sam Stephenson]
12
13 * Correct docs for automatic layout assignment. #2610. [Charles M. Gerungan]
14
15 * Always create new AR sessions rather than trying too hard to avoid database traffic.  #2731 [Jeremy Kemper]
16
17 * Update to Prototype 1.4.0_rc4. Closes #2943 (old Array.prototype.reverse behavior can be obtained by passing false as an argument). [Sam Stephenson]
18
19 * Update to Prototype 1.4.0_rc3. Closes #1893, #2505, #2550, #2748, #2783. [Sam Stephenson]
20
21 * Updated docs for in_place_editor, fixes a couple bugs and offers extended support for external controls [Justin Palmer]
22
23 * Rename Version constant to VERSION. #2802 [Marcel Molina Jr.]
24
25 * Remove the unused, slow response_dump and session_dump variables from error pages.  #1222 [lmarlow@yahoo.com]
26
27 * Update to latest script.aculo.us version (as of [3031])
28
29 * Update documentation for render :file.  #2858 [Tom Werner]
30
31 * Only include builtin filters whose filenames match /^[a-z][a-z_]*_helper.rb$/ to avoid including operating system metadata such as ._foo_helper.rb.  #2855 [court3nay@gmail.com]
32
33 * options_for_select allows any objects which respond_to? :first and :last rather than restricting to Array and Range.  #2824 [Jacob Robbins <jrobbins@cmj.com>, Jeremy Kemper]
34
35 * The auto_link text helper accepts an optional block to format the link text for each url and email address.  Example: auto_link(post.body) { |text| truncate(text, 10) }  [Jeremy Kemper]
36
37 * assert_tag uses exact matches for string conditions, instead of partial matches. Use regex to do partial matches. #2799 [Jamis Buck]
38
39 * CGI::Session::ActiveRecordStore.data_column_name = 'foobar' to use a different session data column than the 'data' default.  [nbpwie102@sneakemail.com]
40
41 * Do not raise an exception when default helper is missing; log a debug message instead.  It's nice to delete empty helpers.  [Jeremy Kemper]
42
43 * Controllers with acronyms in their names (e.g. PDFController) require the correct default helper (PDFHelper in file pdf_helper.rb).  #2262 [jeff@opendbms.com]
44
45
46 *1.11.0* (November 7th, 2005)
47
48 * Added request as instance method to views, so you can do <%= request.env["HTTP_REFERER"] %>, just like you can already access response, session, and the likes [DHH]
49
50 * Fix conflict with assert_tag and Glue gem #2255 [david.felstead@gmail.com]
51
52 * Add documentation to assert_tag indicating that it only works with well-formed XHTML #1937, #2570 [Jamis Buck]
53
54 * Added action_pack.rb stub so that ActionPack::Version loads properly [Sam Stephenson]
55
56 * Added short-hand to assert_tag so assert_tag :tag => "span" can be written as assert_tag "span" [DHH]
57
58 * Added skip_before_filter/skip_after_filter for easier control of the filter chain in inheritance hierachies [DHH]. Example:
59
60     class ApplicationController < ActionController::Base
61       before_filter :authenticate
62     end
63    
64     class WeblogController < ApplicationController
65       # will run the :authenticate filter
66     end
67    
68     class SignupController < ActionController::Base
69       # will not run the :authenticate filter
70       skip_before_filter :authenticate
71     end
72
73 * Added redirect_to :back as a short-hand for redirect_to(request.env["HTTP_REFERER"]) [DHH]
74
75 * Change javascript_include_tag :defaults to not use script.aculo.us loader, which facilitates the use of plugins for future script.aculo.us and third party javascript extensions, and provide register_javascript_include_default for plugins to specify additional JavaScript files to load. Removed slider.js and builder.js from actionpack. [Thomas Fuchs]
76
77 * Fix problem where redirecting components can cause an infinite loop [Rick Olson]
78
79 * Added support for the queue option on visual_effect [Thomas Fuchs]
80
81 * Update script.aculo.us to V1.5_rc4 [Thomas Fuchs]
82
83 * Fix that render :text didn't interpolate instance variables #2629, #2626 [skaes]
84
85 * Fix line number detection and escape RAILS_ROOT in backtrace Regexp [Nicholas Seckar]
86
87 * Fixed document.getElementsByClassName from Prototype to be speedy again [Sam Stephenson]
88
89 * Recognize ./#{RAILS_ROOT} as RAILS_ROOT in error traces [Nicholas Seckar]
90
91 * Remove ARStore session fingerprinting [Nicholas Seckar]
92
93 * Fix obscure bug in ARStore [Nicholas Seckar]
94
95 * Added TextHelper#strip_tags for removing HTML tags from a string (using HTMLTokenizer) #2229 [marcin@junkheap.net]
96
97 * Added a reader for flash.now, so it's possible to do stuff like flash.now[:alert] ||= 'New if not set' #2422 [Caio Chassot]
98
99
100 *1.10.2* (October 26th, 2005)
101
102 * Reset template variables after using render_to_string [skaes@web.de]
103
104 * Expose the session model backing CGI::Session
105
106 * Abbreviate RAILS_ROOT in traces
107
108
109 *1.10.1* (October 19th, 2005)
110
111 * Update error trace templates [Nicholas Seckar]
112
113 * Stop showing generated routing code in application traces [Nicholas Seckar]
114
115
116 *1.10.0* (October 16th, 2005)
117
118 * Make string-keys locals assigns optional. Add documentation describing depreciated state [skaes@web.de]
119
120 * Improve line number detection for template errors [Nicholas Seckar]
121
122 * Update/clean up documentation (rdoc)
123
124 * Upgrade to Prototype 1.4.0_rc0 [Sam Stephenson]
125
126 * Added assert_vaild. Reports the proper AR error messages as fail message when the passed record is invalid [Tobias Luetke]
127
128 * Add temporary support for passing locals to render using string keys [Nicholas Seckar]
129
130 * Clean up error pages by providing better backtraces [Nicholas Seckar]
131
132 * Raise an exception if an attempt is made to insert more session data into the ActiveRecordStore data column than the column can hold. #2234.  [justin@textdrive.com]
133
134 * Removed references to assertions.rb from actionpack assert's backtraces. Makes error reports in functional unit tests much less noisy. [Tobias Luetke]
135
136 * Updated and clarified documentation for JavaScriptHelper to be more concise about the various options for including the JavaScript libs. [Thomas Fuchs]
137
138 * Hide "Retry with Breakpoint" button on error pages until feature is functional. [DHH]
139
140 * Fix Request#host_with_port to use the standard port when Rails is behind a proxy. [Nicholas Seckar]
141
142 * Escape query strings in the href attribute of URLs created by url_helper.  #2333 [Michael Schuerig <michael@schuerig.de>]
143
144 * Improved line number reporting for template errors [Nicholas Seckar]
145
146 * Added :locals support for render :inline #2463 [mdabney@cavoksolutions.com]
147
148 * Unset the X-Requested-With header when using the xhr wrapper in functional tests so that future requests aren't accidentally xhr'ed #2352 [me@julik.nl, Sam Stephenson]
149
150 * Unescape paths before writing cache to file system. #1877. [Damien Pollet]
151
152 * Wrap javascript_tag contents in a CDATA section and add a cdata_section method to TagHelper #1691 [Michael Schuerig, Sam Stephenson]
153
154 * Misc doc fixes (typos/grammar/etc). #2445. [coffee2code]
155
156 * Speed improvement for session_options. #2287. [skaes@web.de]
157
158 * Make cacheing binary files friendly with Windows. #1975. [Rich Olson]
159
160 * Convert boolean form options form the tag_helper. #809. [Michael Schuerig <michael@schuerig.de>]
161
162 * Fixed that an instance variable with the same name as a partial should be implicitly passed as the partial :object #2269 [court3nay]
163
164 * Update Prototype to V1.4.0_pre11, script.aculo.us to [2502] [Thomas Fuchs]
165
166 * Make assert_tag :children count appropriately. Closes #2181. [jamie@bravenet.com]
167
168 * Forced newer versions of RedCloth to use hard breaks [DHH]
169
170 * Added new scriptaculous options for auto_complete_field #2343 [m.stienstra@fngtps.com]
171
172 * Don't prepend the asset host if the string is already a fully-qualified URL
173
174 * Updated to script.aculo.us V1.5.0_rc2 and Prototype to V1.4.0_pre7 [Thomas Fuchs]
175
176 * Undo condition change made in [2345] to prevent normal parameters arriving as StringIO.
177
178 * Tolerate consecutive delimiters in query parameters.  #2295 [darashi@gmail.com]
179
180 * Streamline render process, code cleaning. Closes #2294. [skae]
181
182 * Keep flash after components are rendered. #2291 [Rick Olson, Scott]
183
184 * Shorten IE file upload path to filename only to match other browsers.  #1507 [court3nay@gmail.com]
185
186 * Fix open/save dialog in IE not opening files send with send_file/send_data, #2279 [Thomas Fuchs]
187
188 * Fixed that auto_discovery_link_tag couldn't take a string as the URL [DHH]
189
190 * Fixed problem with send_file and WEBrick using stdout #1812 [DHH]
191
192 * Optimized tag_options to not sort keys, which is no longer necessary when assert_dom_equal and friend is available #1995 [skae]
193
194 * Added assert_dom_equal and assert_dom_not_equal to compare tags generated by the helpers in an order-indifferent manner #1995 [skae]
195
196 * Fixed that Request#domain caused an exception if the domain header wasn't set in the original http request #1795 [Michael Koziarski]
197
198 * Make the truncate() helper multi-byte safe (assuming $KCODE has been set to something other than "NONE") #2103
199
200 * Add routing tests from #1945 [ben@groovie.org]
201
202 * Add a routing test case covering #2101 [Nicholas Seckar]
203
204 * Cache relative_url_root for all webservers, not just Apache #2193 [skae]
205
206 * Speed up cookie use by decreasing string copying #2194 [skae]
207
208 * Fixed access to "Host" header with requests made by crappy old HTTP/1.0 clients #2124 [Marcel Molina]
209
210 * Added easy assignment of fragment cache store through use of symbols for included stores (old way still works too)
211
212   Before:
213     ActionController::Base.fragment_cache_store =
214       ActionController::Base::Caching::Fragments::FileStore.new("/path/to/cache/directory")
215
216   After:
217     ActionController::Base.fragment_cache_store = :file_store, "/path/to/cache/directory"
218
219 * Added ActionController::Base.session_store=, session_store, and session_options to make it easier to tweak the session options (instead of going straight to ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS)
220
221 * Added TextHelper#cycle to cycle over an array of values on each hit (useful for alternating row colors etc) #2154 [dave-ml@dribin.org]
222
223 * Ensure that request.path never returns nil. Closes #1675 [Nicholas Seckar]
224
225 * Add ability to specify Route Regexps for controllers. Closes #1917. [Sebastian Kanthak]
226
227 * Provide Named Route's hash methods as helper methods. Closes #1744. [Nicholas Seckar, Steve Purcell]
228
229 * Added :multipart option to ActiveRecordHelper#form to make it possible to add file input fields #2034 [jstirk@oobleyboo.com]
230
231 * Moved auto-completion and in-place editing into the Macros module and their helper counterparts into JavaScriptMacrosHelper
232
233 * Added in-place editing support in the spirit of auto complete with ActionController::Base.in_place_edit_for, JavascriptHelper#in_place_editor_field, and Javascript support from script.aculo.us #2038 [Jon Tirsen]
234
235 * Added :disabled option to all data selects that'll make the elements inaccessible for change #2167, #253 [eigentone]
236
237 * Fixed that TextHelper#auto_link_urls would include punctuation in the links #2166, #1671 [eigentone]
238
239 * Fixed that number_to_currency(1000, {:precision => 0})) should return "$1,000", instead of "$1,000." #2122 [sd@notso.net]
240
241 * Allow link_to_remote to use any DOM-element as the parent of the form elements to be submitted #2137 [erik@ruby-lang.nl]. Example:
242
243     <tr id="row023">
244       <td><input name="foo"/></td>
245       <td><input name="bar"/></td>
246       <td><%= link_to_remote 'Save', :update => "row023",
247             :submit => "row023", :url => {:action => 'save_row'} %></td>
248     </tr>
249
250 * Fixed that render :partial would fail when :object was a Hash (due to backwards compatibility issues) #2148 [Sam Stephenson]
251
252 * Fixed JavascriptHelper#auto_complete_for to only include unique items #2153 [Thomas Fuchs]
253
254 * Fixed all AssetHelper methods to work with relative paths, such that javascript_include_tag('stdlib/standard') will look in /javascripts/stdlib/standard instead of '/stdlib/standard/' #1963
255
256 * Avoid extending view instance with helper modules each request. Closes #1979
257
258 * Performance improvements to CGI methods. Closes #1980 [Skaes]
259
260 * Added :post option to UrlHelper#link_to that makes it possible to do POST requests through normal ahref links using Javascript
261
262 * Fixed overwrite_params
263
264 * Added ActionController::Base.benchmark and ActionController::Base.silence to allow for easy benchmarking and turning off the log
265
266 * Updated vendor copy of html-scanner to support better xml parsing
267
268 * Added :popup option to UrlHelper#link_to #1996 [gabriel.gironda@gmail.com]. Examples:
269
270     link_to "Help", { :action => "help" }, :popup => true
271     link_to "Busy loop", { :action => "busy" }, :popup => ['new_window', 'height=300,width=600']
272
273 * Drop trailing \000 if present on RAW_POST_DATA (works around bug in Safari Ajax implementation) #918
274
275 * Fix observe_field to fall back to event-based observation if frequency <= 0 #1916 [michael@schubert.cx]
276
277 * Allow use of the :with option for submit_to_remote #1936 [jon@instance-design.co.uk]
278
279 * AbstractRequest#domain returns nil when host is an ip address #2012 [kevin.clark@gmail.com]
280
281 * ActionController documentation update #2051 [fbeausoleil@ftml.net]
282
283 * Yield @content_for_ variables to templates #2058 [Sam Stephenson]
284
285 * Make rendering an empty partial collection behave like :nothing => true #2080 [Sam Stephenson]
286
287 * Add option to specify the singular name used by pagination.
288
289 * Use string key to obtain action value. Allows indifferent hashes to be disabled.
290
291 * Added ActionView::Base.cache_template_loading back.
292
293 * Rewrote compiled templates to decrease code complexity. Removed template load caching in favour of compiled caching. Fixed template error messages. [Nicholas Seckar]
294
295 * Fix Routing to handle :some_param => nil better. [Nicholas Seckar, Luminas]
296
297 * Add support for :include with pagination (subject to existing constraints for :include with :limit and :offset) #1478 [michael@schubert.cx]
298
299 * Prevent the benchmark module from blowing up if a non-HTTP/1.1 request is processed
300
301 * Added :use_short_month option to select_month helper to show month names as abbreviations
302
303 * Make link_to escape the javascript in the confirm option #1964 [nicolas.pouillard@gmail.com]
304
305 * Make assert_redirected_to properly check URL's passed as strings #1910 [Scott Barron]
306
307 * Make sure :layout => false is always used when rendering inside a layout
308
309 * Use raise instead of assert_not_nil in Test::Unit::TestCase#process to ensure that the test variables (controller, request, response) have been set
310
311 * Make sure assigns are built for every request when testing #1866
312
313 * Allow remote_addr to be queried on TestRequest #1668
314
315 * Fixed bug when a partial render was passing a local with the same name as the partial
316
317 * Improved performance of test app req/sec with ~10% refactoring the render method #1823 [Stefan Kaes]
318
319 * Improved performance of test app req/sec with 5-30% through a series of Action Pack optimizations #1811 [Stefan Kaes]
320
321 * Changed caching/expiration/hit to report using the DEBUG log level and errors to use the ERROR log level instead of both using INFO
322
323 * Added support for per-action session management #1763
324
325 * Improved rendering speed on complicated templates by up to 100% (the more complex the templates, the higher the speedup) #1234 [Stephan Kaes]. This did necessasitate a change to the internals of ActionView#render_template that now has four parameters. Developers of custom view handlers (like Amrita) need to update for that.
326
327 * Added options hash as third argument to FormHelper#input, so you can do input('person', 'zip', :size=>10) #1719 [jeremye@bsa.ca.gov]
328
329 * Added Base#expires_in(seconds)/Base#expires_now to control HTTP content cache headers #1755 [Thomas Fuchs]
330
331 * Fixed line number reporting for Builder template errors #1753 [piotr]
332
333 * Fixed assert_routing so that testing controllers in modules works as expected [Nicholas Seckar, Rick Olson]
334
335 * Fixed bug with :success/:failure callbacks for the JavaScriptHelper methods #1730 [court3nay/Thomas Fuchs]
336
337 * Added named_route method to RouteSet instances so that RouteSet instance methods do not prevent certain names from being used. [Nicholas Seckar]
338
339 * Fixed routes so that routes which do not specify :action in the path or in the requirements have a default of :action => 'index', In addition, fixed url generation so that :action => 'index' does not need to be provided for such urls. [Nicholas Seckar, Markjuh]
340
341 * Worked around a Safari bug where it wouldn't pass headers through if the response was zero length by having render :nothing return ' ' instead of ''
342
343 * Fixed Request#subdomains to handle "foo.foo.com" correctly
344
345
346 *1.9.1* (11 July, 2005)
347
348 * Fixed that auto_complete_for didn't force the input string to lower case even as the db comparison was
349
350 * Fixed that Action View should always use the included Builder, never attempt to require the gem, to ensure compatibility
351
352 * Added that nil options are not included in tags, so tag("p", :ignore => nil) now returns <p /> not <p ignore="" />  but that tag("p", :ignore => "") still includes it #1465 [michael@schuerig.de]
353
354 * Fixed that UrlHelper#link_to_unless/link_to_if used html_escape on the name if no link was to be applied. This is unnecessary and breaks its use with images #1649 [joergd@pobox.com]
355
356 * Improved error message for DoubleRenderError
357
358 * Fixed routing to allow for testing of *path components #1650 [Nicholas Seckar]
359
360 * Added :handle as an option to sortable_element to restrict the drag handle to a given class #1642 [thejohnny]
361
362 * Added a bunch of script.aculo.us features #1644, #1677, #1695 [Thomas Fuchs]
363   * Effect.ScrollTo, to smoothly scroll the page to an element
364   * Better Firefox flickering handling on SlideUp/SlideDown
365   * Removed a possible memory leak in IE with draggables
366   * Added support for cancelling dragging my hitting ESC
367   * Added capability to remove draggables/droppables and redeclare sortables in dragdrop.js (this makes it possible to call sortable_element on the same element more than once, e.g. in AJAX returns that modify the sortable element. all current sortable 'stuff' on the element will be discarded and the sortable will be rebuilt)
368   * Always reset background color on Effect.Highlight; this make change backwards-compatibility, to be sure include style="background-color:(target-color)" on your elements or else elements will fall back to their CSS rules (which is a good thing in most circumstances)
369   * Removed circular references from element to prevent memory leaks (still not completely gone in IE)
370   * Changes to class extension in effects.js
371   * Make Effect.Highlight restore any previously set background color when finishing (makes effect work with CSS classes that set a background color)
372   * Fixed myriads of memory leaks in IE and Gecko-based browsers [David ZÃŒlke]
373   * Added incremental and local autocompleting and loads of documentation to controls.js [Ivan Krstic]
374   * Extended the auto_complete_field helper to accept tokens option
375   * Changed object extension mechanism to favor Object.extend to make script.aculo.us easily adaptable to support 3rd party libs like IE7.js [David ZÃŒlke]
376  
377 * Fixed that named routes didn't use the default values for action and possible other parameters #1534 [Nicholas Seckar]
378
379 * Fixed JavascriptHelper#visual_effect to use camelize such that :blind_up will work #1639 [pelletierm@eastmedia.net]
380
381 * Fixed that a SessionRestoreError was thrown if a model object was placed in the session that wasn't available to all controllers. This means that it's no longer necessary to use the 'model :post' work-around in ApplicationController to have a Post model in your session.
382
383
384 *1.9.0* (6 July, 2005)
385
386 * Added logging of the request URI in the benchmark statement (makes it easy to grep for slow actions)
387
388 * Added javascript_include_tag :defaults shortcut that'll include all the default javascripts included with Action Pack (prototype, effects, controls, dragdrop)
389
390 * Cache several controller variables that are expensive to calculate #1229 [skaes@web.de]
391
392 * The session class backing CGI::Session::ActiveRecordStore may be replaced with any class that duck-types with a subset of Active Record.  See docs for details #1238 [skaes@web.de]
393
394 * Fixed that hashes was not working properly when passed by GET to lighttpd #849 [Nicholas Seckar]
395
396 * Fixed assert_template nil will be true when no template was rendered #1565 [maceywj@telus.net]
397
398 * Added :prompt option to FormOptions#select (and the users of it, like FormOptions#select_country etc) to create "Please select" style descriptors #1181 [Michael Schuerig]
399
400 * Added JavascriptHelper#update_element_function, which returns a Javascript function (or expression) that'll update a DOM element according to the options passed #933 [mortonda@dgrmm.net]. Examples:
401
402     <%= update_element_function("products", :action => :insert, :position => :bottom, :content => "<p>New product!</p>") %>
403
404     <% update_element_function("products", :action => :replace, :binding => binding) do %>
405       <p>Product 1</p>
406       <p>Product 2</p>
407     <% end %>
408
409 * Added :field_name option to DateHelper#select_(year|month|day) to deviate from the year/month/day defaults #1266 [Marcel Molina]
410
411 * Added JavascriptHelper#draggable_element and JavascriptHelper#drop_receiving_element to facilitate easy dragging and dropping through the script.aculo.us libraries #1578 [Thomas Fuchs]
412
413 * Added that UrlHelper#mail_to will now also encode the default link title #749 [f.svehla@gmail.com]
414
415 * Removed the default option of wrap=virtual on FormHelper#text_area to ensure XHTML compatibility #1300 [thomas@columbus.rr.com]
416
417 * Adds the ability to include XML CDATA tags using Builder #1563 [Josh Knowles]. Example:
418
419     xml.cdata! "some text" # => <![CDATA[some text]]>
420
421 * Added evaluation of <SCRIPT> blocks in content returned to Ajax calls #1577 [Thomas Fuchs/court3nay/Sean Treadway]
422
423 * Directly generate paths with a leading slash instead of tacking it on later.  #1543 [Nicholas Seckar]
424
425 * Fixed errant parameter modification in functional tests.  #1542 [Nicholas Seckar]
426
427 * Routes fail with leading slash #1540 [Nicholas Seckar]
428
429 * Added support for graceful error handling of Ajax calls #1217 [Jamis Buck/Thomas Fuchs]. Example:
430
431     link_to_remote(
432       "test",
433       :url => { :action => "faulty" },
434       :update => { :success => "good", :failure => "bad" },
435       403 => "alert('Forbidden- got ya!')",
436       404 => "alert('Nothing there...?')",
437       :failure => "alert('Unkown error ' + request.status)")
438  
439 * Attempt to explicitly flush the output at the end of CgiProcess#out
440
441 * Fixed assert_redirected_to to handle absolute controller paths properly #1472 [Rick Olson/Nicholas Seckar]
442
443 * Added event-based observations when frequency is not set on observe_field/form #1474 [flash@vanklinkenbergsoftware.nl]
444
445 * Added script.aculo.us Javascripts (controls.js, dragdrop.js, effects.js) (NEEDS MORE DESCRIPTION) #1509 [Thomas Fuchs]
446
447 * Fixed prototype to consider all fields it doesn't know as text (such as Safari's search) just like the browser in its serialization #1497 [Sean Treadway]
448
449 * Improved performance of Routes generation by a factor of 5 #1434 [Nicholas Seckar]
450
451 * Added named routes (NEEDS BETTER DESCRIPTION) #1434 [Nicholas Seckar]
452
453 * Improved AbstractRequest documentation #1483 [court3nay@gmail.com]
454
455 * Added ActionController::Base.allow_concurrency to control whether the application is thread-safe, so multi-threaded servers like WEBrick knows whether to apply a mutex around the performance of each action. Turned off by default. EXPERIMENTAL FEATURE.
456
457 * Added TextHelper#word_wrap(text, line_length = 80) #1449 [tuxie@dekadance.se]
458
459 * Added a fall-through action for form_remote_tag that'll be used in case Javascript is unavailable #1459 [Scott Barron]. Example:
460
461     form_remote_tag :html => { :action => url_for(:controller => "some", :action => "place") }
462
463 * Added :xhr => true/false option to verify so you can ensure that a request is coming from an Ajax call or not #1464 [Thomas Fuchs]
464
465 * Added tag_options as a third parameter to AssetHelper#auto_discovery_link_tag to control options like the title of the link #1430 [kevin.clark@gmail.com]
466
467 * Added option to pass in parameters to CaptureHelper#capture, so you can create more advanced view helper methods #1466 [duane.johnson@gmail.com]. Example:
468
469     <% show_calendar(:year => 2005, :month => 6) do |day, options| %>
470       <% options[:bgcolor] = '#dfd' if 10..15.include? day %>
471       [<%= day %>]
472     <% end %>
473
474 * Changed the default name of the input tag generated by FormTagHelper#submit_tag from "submit" to "commit" so it doesn't clash with form.submit() calls in Javascript #1271
475
476 * Fixed relative urls support for lighttpd #1048 [Nicholas Seckar/maznawak@nerim.net]
477
478 * Correct distance_of_time_in_words for integer arguments and make the second arg optional, treating the first arg as a duration in seconds.  #1458 [madrobby <thomas@fesch.at>]
479
480 * Fixed query parser to deal gracefully with equal signs inside keys and values #1345 [gorou].
481   Example: /?sig=abcdef=:foobar=&x=y will pass now.
482
483 * Added Cuba to country list #1351 [todd]
484
485 * Fixed radio_button to work with numeric values #1352 [demetrius]
486
487 * Added :extension option to NumberHelper#number_to_phone #1361 [delynnb]
488
489 * Added button_to as a form-based solution to deal with harmful actions that should be hidden behind POSTs. This makes it just as easy as link_to to create a safe trigger for actions like destroy, although it's limited by being a block element, the fixed look, and a no-no inside other forms. #1371 [tom@moertel.com]
490
491 * Fixed image_tag so an exception is not thrown just because the image is missing and alt value can't be generated #1395 [Marcel]
492
493 * Added a third parameter to TextHelper#auto_link called href_options for specifying additional tag options on the links generated #1401 [tyler.kovacs@gmail.com]. Example: auto_link(text, :all, { :target => "_blank" }) to have all the generated links open in a new window.
494
495 * Fixed TextHelper#highlight to return the text, not nil, if the phrase is blank #1409 [patrick@lenz.sh]
496
497 * Fixed TagHelper such that :name and 'name' keys in the options doesn't result in two attributes #1455 [take_tk]
498
499 * Ensure that helpers are only available to the controllers where they are defined and their subclasses.  #1394 [kdole@tamu.edu]
500
501 * render("foo/bar") works with a layout again
502
503 * Fixed double-singularization on scaffolded pagination call (Address would be turned into Addres) #1216, #1404 [nilsga]
504
505 * Removed the require hack used by functional testing to work around an earlier bug in rake.
506
507 * Allow distance_of_time_in_words to work with any value that responds to #to_time (like dates) #969
508
509 * Support :render option for :verify #1440 [TobiasLuetke]
510
511 * Updated vendor copy of html-scanner lib to 0.5.2, for bug fixes and optimizations. The :content option may be used as expected--to find a tag whose textual content is a particular value--in assert_tag, now.
512
513 * Changed test requests to come from 0.0.0.0 instead of 127.0.0.1 such that they don't trigger debugging screens on exceptions, but instead call rescue_action_in_public
514
515 * Modernize scaffolding to match the generator: use the new render method and change style from the warty @params["id"] to the sleek params[:id].  #1367
516
517 * Include :id in the action generated by the form helper method.  Then, for example, the controller can do Model.find(params[:id]) for both edit and update actions.  Updated scaffolding to take advantage.  #1367
518
519 * Add assertions with friendly messages to TestCase#process to ensure that @controller, @request, and @response are set.  #1367
520
521 * Arrays, hashes sent via multipart posts are converted to strings #1032 [dj@omelia.org, me@julik.nl]
522
523 * render(:layout => true) is a synonym for render(:layout => nil)
524
525 * Make sure the benchmarking render method always returns the output of the render.
526
527 * render(:action), render(:template) and render() are the only three calls that default to using a layout. All other render calls assume :layout => false. This also fixes send_file, which was applying a layout if one existed for the current action.
528
529 * verify with :redirect_to won't redirect if a redirect or render has already been performed #1350
530
531 * render(:partial => true) is identical to the behavior of the deprecated render_partial()
532
533 * Fixed render(:partial => "...") to use an empty Hash for the local assigns #1365
534
535 * Fixed Caching::Fragments::FileStore.delete to not raise an exception if the delete fails.
536
537 * Deprecated all render_* methods in favor of consolidating all rendering behavior in Base#render(options). This enables more natural use of combining options, such as layouts. Examples:
538
539     +---------------------------------------------------------------+-------------------------------------------------------+
540     | BEFORE                                                        | AFTER                                                 |
541     +---------------------------------------------------------------+-------------------------------------------------------+
542     | render_with_layout "weblog/show", "200 OK", "layouts/dialog"  | render :action => "show", :layout => "dialog"         |
543     | render_without_layout "weblog/show"                           | render :action => "show", :layout => false            |
544     | render_action "error", "404 Not Found"                        | render :action => "error", :status => "404 Not Found" |
545     | render_template "xml.div('stuff')", "200 OK", :rxml           | render :inline => "xml.div('stuff')", :type => :rxml  |
546     | render_text "hello world!"                                    | render :text => "hello world!"                        |
547     | render_partial_collection "person", @people, nil, :a => 1     | render :partial => "person", :collection => @people,  |
548     |                                                               |        :locals => { :a => 1 }                         |
549     +---------------------------------------------------------------+-------------------------------------------------------+     
550
551 * Deprecated redirect_to_path and redirect_to_url in favor of letting redirect_to do the right thing when passed either a path or url.
552
553 * Fixed use of an integer as return code for renders, so render_text "hello world", 404 now works #1327
554
555 * Fixed assert_redirect_to to work with redirect_to_path #869 [Nicholas Seckar]
556
557 * Fixed escaping of :method option in remote_form_tag #1218 [Rick Olson]
558
559 * Added Serbia and Montenegro to the country_select #1239 [todd@robotcoop.com]
560
561 * Fixed Request#remote_ip in testing #1251 [Jeremy Kemper]
562
563 * Fixed that compute_public_path should recognize external URLs, so image_tag("http://www.example.com/images/icon.gif") is not prefixed with the relative url path #1254 [victor-ronr-trac@carotena.net]
564
565 * Added support for descending year values in DateHelper#select_year, like select_year(Date.today, :start_year => 2005, :end_year => 1900), which would count down from 2005 to 1900 instead of the other way #1274 [nwoods@mail.com]
566
567 * Fixed that FormHelper#checkbox should return a checked checkbox if the value is the same as checked_value #1286 [Florian Weber]
568
569 * Fixed Form.disable in Prototype #1317 [Wintermute]
570
571 * Added accessors to logger, params, response, session, flash, and headers from the view, so you can write <% logger.info "stuff" %> instead of <% @logger.info "others" %> -- more consistent with the preferred way of accessing these attributes and collections from the controller
572
573 * Added support for POST data in form of YAML or XML, which is controller through the Content-Type header. Example request:
574
575     Content-Type: application/xml
576     <request><item><content>HelloWorld</content></item></request>
577  
578   ...is the same as:
579
580     Content-Type: application/x-yaml
581     ---
582     item:
583       content: HelloWorld
584
585   ...is the same as:
586  
587     item[content]=HelloWorld
588  
589   Which in the end turns into { "item" => { "content" => "HelloWorld" } }. This makes it a lot easier to publish REST web services on top of your regular actions (as they won't care).
590  
591   Example Curl call:
592
593     curl -H 'Content-Type: application/xml' -d '<request><item><content>KillMeMore</content></item></request>' http://www.example.com/service
594
595   You can query to find out whether a given request came through as one of these types with:
596     - request.post_format? (:url_encoded, :xml or :yaml)
597     - request.formatted_post? (for either xml or yaml)
598     - request.xml_post?
599     - request.yaml_post?
600
601 * Added bundling of XmlSimple by Maik Schmidt
602
603 * Fixed that render_partial_collection should always return a string (and not sometimes an array, despite <%= %> not caring)
604
605 * Added TextHelper#sanitize that can will remove any Javascript handlers, blocks, and forms from an input of HTML.  This allows for use of HTML on public sites, but still be free of XSS issues. #1277 [Jamis Buck]
606
607 * Fixed the HTML scanner used by assert_tag where a infinite loop could be caused by a stray less-than sign in the input #1270 [Jamis Buck]
608
609 * Added functionality to assert_tag, so you can now do tests on the siblings of a node, to assert that some element comes before or after the element in question, or just to assert that some element exists as a sibling #1226 [Jamis Buck]
610
611 * Added better error handling for regexp caching expiration
612
613 * Fixed handling of requests coming from unknown HTTP methods not to kill the server
614
615 * Added that both AssetHelper#stylesheet_link_tag and AssetHelper#javascript_include_tag now accept an option hash as the last parameter, so you can do stuff like: stylesheet_link_tag "style", :media => "all"
616
617 * Added FormTagHelper#image_submit_tag for making submit buttons that uses images
618
619 * Added ActionController::Base.asset_host that will then be used by all the asset helpers. This enables you to easily offload static content like javascripts and images to a separate server tuned just for that.
620
621 * Fixed action/fragment caching using the filestore when a directory and a file wanted to use the same name. Now there's a .cache prefix that sidesteps the conflict #1188 [imbcmdth@hotmail.com]
622
623 * Fixed missing id uniqueness in FormTag#radio_button #1207 [Jarkko]
624
625 * Fixed assert_redirected_to to work with :only_path => false #1204 [Alisdair McDiarmid]
626
627 * Fixed render_partial_collection to output an empty string instead of nil when handed an empty array #1202 [Ryan Carver]
628
629 * Improved the speed of regular expression expirations for caching by a factor of 10 #1221 [Jamis Buck]
630
631 * Removed dumping of template assigns on the rescue page as it would very easily include a ton of data making page loads take seconds (and the information was rarely helpful) #1222
632
633 * Added BenchmarkHelper that can measure the execution time of a block in a template and reports the result to the log. Example:
634  
635     <% benchmark "Notes section" do %>
636       <%= expensive_notes_operation %>
637     <% end %>
638  
639    Will add something like "Notes section (0.345234)" to the log.
640
641 * Added ActionController::Caching::Sweeper as an improved an easier to use sweeper. The new sweepers work on a single-step approach instead of two-steps like the old ones. Before
642
643     def after_save(record)
644       @list = record.is_a?(List) ? record : record.list
645     end
646    
647     def filter(controller)
648       controller.expire_page(:controller => "lists", :action => %w( show public feed ), :id => @list.id)
649       controller.expire_action(:controller => "lists", :action => "all")
650       @list.shares.each { |share| controller.expire_page(:controller => "lists", :action => "show", :id => share.url_key) }
651     end
652
653   ..after:
654
655     def after_save(record)
656       list = record.is_a?(List) ? record : record.list
657       expire_page(:controller => "lists", :action => %w( show public feed ), :id => list.id)
658       expire_action(:controller => "lists", :action => "all")
659       list.shares.each { |share| expire_page(:controller => "lists", :action => "show", :id => share.url_key) }
660     end
661
662   The new sweepers can also observe on the actions themselves by implementing methods according to (before|after)_$controller_$action. Example of a callback that'll be called after PagesController#update_title has been performed:
663  
664       def after_pages_update_title
665         expire_fragment(%r{pages/#{controller.assigns["page"].id}/.*})
666       end
667
668   Note that missing_method is delegated to the controller instance, which is assigned in a before filter. This means that you can call expire_fragment instead of @controller.expire_fragment.
669
670 * Added that Fragments#expire_fragment now accepts as a regular expression as the name thereby deprecating expire_matched_fragments
671
672 * Fixed that fragments shouldn't use the current host and the path as part of the key like pages does
673
674 * Added conditions to around_filters just like before_filter and after_filter
675
676
677 *1.8.1* (20th April, 2005)
678
679 * Added xml_http_request/xhr method for simulating XMLHttpRequest in functional tests #1151 [Sam Stephenson]. Example:
680
681     xhr :post, :index
682
683 * Fixed that Ajax.Base.options.asynchronous wasn't being respected in Ajax.Request (thanks Jon Casey)
684
685 * Fixed that :get, :post, and the others should take a flash array as the third argument just like process #1144 [rails@cogentdude.com]
686
687 * Fixed a problem with Flash.now
688
689 * Fixed stringification on all assigned hashes. The sacrifice is that assigns[:person] won't work in testing. Instead assigns["person"] or assigns(:person) must be used. In other words, the keys of assigns stay strings but we've added a method-based accessor to appease the need for symbols.
690
691 * Fixed that rendering a template would require a connection to the database #1146
692
693
694 *1.8.0* (19th April, 2005)
695
696 * Added assert_tag and assert_no_tag as a much improved alternative to the deprecated assert_template_xpath_match #1126 [Jamis Buck]
697
698 * Deprecated the majority of all the testing assertions and replaced them with a much smaller core and access to all the collections the old assertions relied on. That way the regular test/unit assertions can be used against these. Added documentation about how to use it all.
699
700 * Added a wide range of new Javascript effects:
701     * Effect.Puff zooms the element out and makes it smoothly transparent at the same time, giving a "puff" illusion #996 [thomas@fesch.at]
702       After the animation is completed, the display property will be set to none.
703       This effect will work on relative and absolute positioned elements.
704      
705     * Effect.Appear as the opposite of Effect.Fade #990 [thomas@fesch.at]
706       You should return elements with style="display:none;" or a like class for this to work best and have no chance of flicker.
707      
708     * Effect.Squish for scaling down an element and making it disappear at the end #972 [thomas@fesch.at]
709    
710     * Effect.Scale for smoothly scaling images or text up and down #972 [thomas@fesch.at]
711    
712     * Effect.Fade which smoothly turns opacity from 100 to 0 and then hides the element #960 [thomas@fesch.at]
713
714 * Added Request#xml_http_request? (and an alias xhr?) to that'll return true when the request came from one of the Javascript helper methods (Ajax). This can be used to give one behavior for modern browsers supporting Ajax, another to old browsers #1127 [Sam Stephenson]
715
716 * Changed render_partial to take local assigns as the second parameter instead of an explicit object and then the assigns. So the API changes from:
717
718     <%= render_partial "account", person, "rules" => regulations.rules %>
719    
720   ...to:
721  
722     <%= render_partial "account", :account => person, :rules => regulations.rules %>
723  
724   The old API will still work, though, and render_partial "account" will still assume :account => @account.
725
726 * Added support for web servers that use PATH_INFO instead of REQUEST_URI like IIS #1014 [BradG/Nicholas Seckar]
727
728 * Added graceful handling of PUT, DELETE, and OPTIONS requests for a complete coverage of REST functionality #1136 [joshknowles@gmail.com]
729
730 * Fixed that you can now pass an alternative :href option to link_to_function/remote in order to point to somewhere other than # if the javascript fails or is turned off. You can do the same with form_remote_tag by passing in :action. #1113 [Sam Stephenson]
731
732 * Fixed DateHelper to return values on the option tags such that they'll work properly in IE with form_remote_tag #1024 [Scott Raymond]
733
734 * Fixed FormTagHelper#check_box to respect checked #1049 [DelynnB]
735
736 * Added that render_partial called from a controller will use the action name as default #828 [Dan Peterson]
737
738 * Added Element.toggle, Element.show, and Element.hide to the prototype javascript library. Toggle.display has been deprecated, but will still work #992 [Lucas Carlson]
739
740 * Added that deleting a cookie should not just set it to an empty string but also instantly expire it #1118 [todd@robotcoop.com]
741
742 * Added AssetTagHelper#image_path, AssetTagHelper#javascript_path, and AssetTagHelper#stylesheet_path #1110 [Larry Halff]
743
744 * Fixed url_for(nil) in functional tests #1116 [Alisdair McDiarmid]
745
746 * Fixed error handling of broken layouts #1115 [Michael Schubert]
747
748 * Added submit_to_remote that allows you to trigger an Ajax form submition at the click of the submission button, which allows for multiple targets in a single form through the use of multiple submit buttons #930 [yrashk@gmail.com]
749
750 * Fixed pagination to work with joins #1034 [scott@sigkill.org]
751
752 * Fixed that *rest parameter in map.connect couldn't accept an empty list #1037 [Dee.Zsombor@gmail.com]
753
754 * Added :confirm option to link_to_remote just like link_to has #1082 [yrashk@fp.org.ua]
755
756 * Added minute_step as an option to select_minute (and the helpers that use it) to jump in larger increments than just 1 minute. At 15, it would return 0, 15, 30, 45 options #1085 [ordwaye@evergreen.edu]
757
758 * Fixed that an exception would be thrown when an empty form was submitted #1090 [jan@ulbrich-boerwang.de]
759
760 * Moved TextHelper#human_size to NumberHelper#number_to_human_size, but kept an deprecated alias to the old method name
761
762 * Fixed that the content-type for some browsers could include an additional \r which made wonky things happen #1067 [Thomas Fuchs]
763
764 * Fixed that radio buttons shouldn't have a default size attribute #1074 [hendrik@mans.de]
765
766 * Added ActionView::Helpers::InstanceTag::DEFAULT_RADIO_OPTIONS that contains a hash of default options for radio buttons #1074 [hendrik@mans.de]
767
768 * Fixed that in some circumstances controllers outside of modules may have hidden ones inside modules. For example, admin/content might have been hidden by /content. #1075 [Nicholas Seckar]
769
770 * Added JavascriptHelper#periodically_call_remote in order to create areas of a page that update automatically at a set interval #945 [Jon Tirsen]
771
772 * Fixed Cache#expire_matched_fragments that couldn't recognize the difference between string and url_for options #1030 [skaes@web.de]
773
774 * Added simulation of @request.request_uri in functional tests #1038 [Jamis Buck]
775
776 * Fixed autolinking to work better in more cases #1013 [Jamis Buck]
777
778 * Added the possible of using symbols in form helpers that relate to instance variables like text_field :account, :name in addition to text_field "account", "name"'
779
780 * Fixed javascript_include_tag to output type instead of language and conform to XHTML #1018 [Rick Olson]
781
782 * Added NumberHelper for common string representations like phone number, currency, and percentage #1015 [DeLynn]
783
784 * Added pagination for scaffolding (10 items per page) #964 [mortonda@dgrmm.net]
785
786 * Added assert_no_cookie and fixed assert_cookie_equal to deal with non-existing cookies #979 [Jeremy Kemper]
787
788 * Fixed :overwrite_param so it doesn't delete but reject elements from @request.parameters #982 [raphinou@yahoo.com]
789
790 * Added :method option to verify for ensuring that either GET, POST, etc is allowed #984 [Jamis Buck]
791
792 * Added options to set cc, bcc, subject, and body for UrlHelper#mail_to #966 [DeLynn]
793
794 * Fixed include_blank for select_hour/minute/second #527 [edward@debian.org]
795
796 * Improved the message display on the exception handler pages #963 [Johan Sorensen]
797
798 * Fixed that on very rare occasions, webrick would raise a NoMethodError: private method 'split' called for nil #1001 [Flurin Egger]
799
800 * Fixed problem with page caching #958 [Rick Olson]
801
802
803 *1.7.0* (27th March, 2005)
804
805 * Added ActionController::Base.page_cache_extension for setting the page cache file extension (the default is .html) #903 [Andreas]
806
807 * Fixed "bad environment variable value" exception caused by Safari, Apache, and Ajax calls #918
808
809 * Fixed that pagination_helper would ignore :params #947 [Sebastian Kanthak]
810
811 * Added :owerwrite_params back to url_for and friends -- it was AWL since the introduction of Routes #921 [raphinou]
812
813 * Added :position option to link_to_remote/form_remote_tag that can be either :before, :top, :bottom, or :after and specifies where the return from the method should be inserted #952 [Matthew McCray/Sam Stephenson]
814
815 * Added Effect.Highlight to prototype.js to do Yellow Fade Technique (of 37signals' fame) on any container #952 [Sam Stephenson/courtenay]
816
817 * Added include_seconds option as the third parameter to distance_of_time_in_words which will render "less than a minute" in higher resolution ("less than 10 seconds" etc) #944 [thomas@fesch.at]
818
819 * Added fourth option to process in test cases to specify the content of the flash #949 [Jamis Buck]
820
821 * Added Verifications that allows you to specify preconditions to actions in form of statements like <tt>verify :only => :update_post, :params => "admin_privileges", :redirect_to => { :action => "settings" }</tt>, which ensure that the update_post action is only called if admin_privileges is available as a parameter -- otherwise the user is redirected to settings. #897 [Jamis Buck]
822
823 * Fixed Form.Serialize for the JavascriptHelper to also seriliaze password fields #934 [dweitzman@gmail.com]
824
825 * Added JavascriptHelper#escape_javascript as a public method (was private) and made it escape both single and double quotes and new lines #940 [mortonda@dgrmm.net]
826
827 * Added trailing_slash option to url_for, so you can generate urls ending in a slash. Note that is currently not recommended unless you need it for special reasons since it breaks caching #937 [stian@grytoyr.net]
828
829 * Added expire_matched_fragments(regular_expression) to clear out a lot of fragment caches at once #927 [technoweenie@gmail.com]
830
831 * Fixed the problems with : and ? in file names for fragment caches on Windows #927 [technoweenie@gmail.com]
832
833 * Added TextHelper#human_size for formatting file sizes, like human_size(1234567) => 1.2 MB #943 [thomas@fesch.at]
834
835 * Fixed link_to :confirm #936 [Nicholas Seckar]
836
837 * Improved error reporting especially around never shallowing exceptions. Debugging helpers should be much easier now #980 [Nicholas Seckar]
838
839 * Fixed Toggle.display in prototype.js #902 [Lucas Carlson]
840
841
842 *1.6.0* (22th March, 2005)
843
844 * Added a JavascriptHelper and accompanying prototype.js library that opens the world of Ajax to Action Pack with a large array of options for dynamically interacting with an application without reloading the page #884 [Sam Stephenson/David]
845
846 * Added pagination support through both a controller and helper add-on #817 [Sam Stephenson]
847
848 * Fixed routing and helpers to make Rails work on non-vhost setups #826 [Nicholas Seckar/Tobias Luetke]
849
850 * Added a much improved Flash module that allows for finer-grained control on expiration and allows you to flash the current action #839 [Caio Chassot]. Example of flash.now:
851
852     class SomethingController < ApplicationController
853       def save
854         ...
855         if @something.save
856           # will redirect, use flash
857           flash[:message] = 'Save successful'
858           redirect_to :action => 'list'
859         else
860           # no redirect, message is for current action, use flash.now
861           flash.now[:message] = 'Save failed, review'
862           render_action 'edit'
863         end
864       end   
865     end
866
867 * Added to_param call for parameters when composing an url using url_for from something else than strings #812 [Sam Stephenson]. Example:
868
869     class Page
870       def initialize(number)
871         @number = number
872       end
873       # ...
874       def to_param
875         @number.to_s
876       end
877     end
878
879   You can now use instances of Page with url_for:
880
881     class BarController < ApplicationController
882       def baz
883         page = Page.new(4)
884         url = url_for :page => page # => "http://foo/bar/baz?page=4"
885       end
886     end
887
888 * Fixed form helpers to query Model#id_before_type_cast instead of Model#id as a temporary workaround for Ruby 1.8.2 warnings #818 [DeLynn B]
889
890 * Fixed TextHelper#markdown to use blank? instead of empty? so it can deal with nil strings passed #814 [Johan Sörensen]
891
892 * Added TextHelper#simple_format as a non-dependency text presentation helper #814 [Johan Sörensen]
893
894 * Added that the html options disabled, readonly, and multiple can all be treated as booleans. So specifying <tt>disabled => :true</tt> will give <tt>disabled="disabled"</tt>. #809 [mindel]
895
896 * Added path collection syntax for Routes that will gobble up the rest of the url and pass it on to the controller #830 [rayners]. Example:
897
898     map.connect 'categories/*path_info', :controller => 'categories', :action => 'show'
899
900   A request for /categories/top-level-cat, would give @params[:path_info] with "top-level-cat".
901   A request for /categories/top-level-cat/level-1-cat, would give @params[:path_info] with "top-level-cat/level-1-cat" and so forth.
902  
903   The @params[:path_info] return is really an array, but where to_s has been overwritten to do join("/").
904
905 * Fixed options_for_select on selected line issue #624 [Florian Weber]
906
907 * Added CaptureHelper with CaptureHelper#capture and CaptureHelper#content_for. See documentation in helper #837 [Tobias Luetke]
908
909 * Fixed :anchor use in url_for #821 [Nicholas Seckar]
910
911 * Removed the reliance on PATH_INFO as it was causing problems for caching and inhibited the new non-vhost support #822 [Nicholas Seckar]
912
913 * Added assigns shortcut for @response.template.assigns to controller test cases [Jeremy Kemper]. Example:
914
915   Before:
916
917     def test_list
918       assert_equal 5, @response.template.assigns['recipes'].size
919       assert_equal 8, @response.template.assigns['categories'].size
920     end
921
922   After:
923
924     def test_list
925       assert_equal 5, assigns(:recipes).size
926       assert_equal 8, assigns(:categories).size
927     end
928
929 * Added TagHelper#image_tag and deprecated UrlHelper#link_image_to (recommended approach is to combine image_tag and link_to instead)
930
931 * Fixed textilize to be resilient to getting nil parsed (by using Object#blank? instead of String#empty?)
932
933 * Fixed that the :multipart option in FormTagHelper#form_tag would be ignored [Yonatan Feldman]
934
935
936 *1.5.1* (7th March, 2005)
937
938 * Fixed that the routes.rb file wouldn't be found on symlinked setups due to File.expand_path #793 [piotr@t-p-l.com]
939
940 * Changed ActiveRecordStore to use Marshal instead of YAML as the latter proved troublesome in persisting circular dependencies. Updating existing applications MUST clear their existing session table from data to start using this updated store #739 [Jamis Buck]
941
942 * Added shortcut :id assignment to render_component and friends (before you had to go through :params) #784 [Lucas Carlson]
943
944 * Fixed that map.connect should convert arguments to strings #780 [Nicholas Seckar]
945
946 * Added UrlHelper#link_to_if/link_to_unless to enable other conditions that just link_to_unless_current #757 [mindel]
947
948 * Fixed that single quote was not escaped in a UrlHelper#link_to javascript confirm #549 [Scott Barron]
949
950 * Removed the default border on link_image_to (it broke xhtml strict) -- can be specified with :border => 0 #517 [?/caleb]
951
952 * Fixed that form helpers would treat string and symbol keys differently in html_options (and possibly create duplicate entries) #112 [Jeremy Kemper]
953
954 * Fixed that broken pipe errors (clients disconnecting in mid-request) could bring down a fcgi process
955
956 * Added the original exception message to session recall errors (so you can see which class wasnt required)
957
958 * Fixed that RAILS_ROOT might not be defined when AP was loaded, so do a late initialization of the ROUTE_FILE #761 [Scott Barron]
959
960 * Fix request.path_info and clear up LoadingModule behavior #754 [Nicholas Seckar]
961
962 * Fixed caching to be aware of extensions (so you can cache files like api.wsdl or logo.png) #734 [Nicholas Seckar]
963
964 * Fixed that Routes would raise NameErrors if a controller component contains characters that are not valid constant names #733 [Nicholas Seckar]
965
966 * Added PATH_INFO access from the request that allows urls like the following to be interpreted by rails: http://www.example.com/dispatcher.cgi/controller/action -- that makes it possible to use rails as a CGI under lighttpd and would also allow (for example) Rublog to be ported to rails without breaking existing links to Rublog-powered blogs. #728 [Jamis Buck]
967
968 * Fixed that caching the root would result in .html not index.html #731, #734 [alisdair/Nicholas Seckar]
969
970
971 *1.5.0* (24th February, 2005)
972
973 * Added Routing as a replacement for mod_rewrite pretty urls [Nicholas Seckar]. Read more in ActionController::Base.url_for and on http://manuals.rubyonrails.com/read/book/9
974
975 * Added components that allows you to call other actions for their rendered response while execution another action. You can either delegate the entire response rendering or you can mix a partial response in with your other content. Read more on http://manuals.rubyonrails.com/read/book/14
976
977 * Fixed that proxy IPs do not follow all RFC1918 nets #251 [caleb@aei-tech.com]
978
979 * Added Base#render_to_string to parse a template and get the result back as a string #479
980
981 * Fixed that send_file/data can work even if render* has been called before in action processing to render the content of a file to be send for example #601
982
983 * Added FormOptionsHelper#time_zone_select and FormOptionsHelper#time_zone_options_for_select to work with the new value object TimeZone in Active Support #688 [Jamis Buck]
984
985 * Added FormHelper#file_field and FormTagHelper#file_field_tag for creating file upload fields
986
987 * Added :order option for date_select that allows control over the order in which the date dropdowns is used and which of them should be used #619 [Tim Bates]. Examples:
988
989     date_select("post", "written_on", :order => [:day, :month, :year])
990     date_select("user", "birthday",   :order => [:month, :day])
991
992 * Added ActionView::Base.register_template_handler for easy integration of an alternative template language to ERb and Builder. See test/controller/custom_handler_test.rb for a usage example #656 [Jamis Buck]
993
994 * Added AssetTagHelper that provides methods for linking a HTML page together with other assets, such as javascripts, stylesheets, and feeds.
995
996 * Added FormTagHelper that provides a number of methods for creating form tags that doesn't rely on conventions with an object assigned to the template like FormHelper does. With the FormTagHelper, you provide the names and values yourself.
997
998 * Added Afghanistan, Iran, and Iraq to the countries list used by FormOptions#country_select and FormOptions#country_options_for_select
999
1000 * Renamed link_to_image to link_image_to (since thats what it actually does) -- kept alias for the old method name
1001
1002 * Fixed textilize for RedCloth3 to keep doing hardbreaks
1003
1004 * Fixed that assert_template_xpath_matches did not indicate when a path was not found #658 [Eric Hodel]
1005
1006 * Added TextHelper#auto_link to turn email addresses and urls into ahrefs
1007
1008 * Fixed that on validation errors, scaffold couldn't find template #654 [mindel]
1009
1010 * Added Base#hide_action(*names) to hide public methods from a controller that would otherwise have been callable through the URL. For the majority of cases, its preferred just to make the methods you don't want to expose protected or private (so they'll automatically be hidden) -- but if you must have a public method, this is a way to make it uncallable. Base#hidden_actions retrieve the list of all hidden actions for the controller #644 [Nicholas Seckar]
1011
1012 * Fixed that a bunch of methods from ActionController::Base was accessible as actions (callable through a URL) when they shouldn't have been #644 [Nicholas Seckar]
1013
1014 * Added UrlHelper#current_page?(options) method to check if the url_for options passed corresponds to the current page
1015
1016 * Fixed https handling on other ports than 443 [Alan Gano]
1017
1018 * Added follow_redirect method for functional tests that'll get-request the redirect that was made. Example:
1019
1020     def test_create_post
1021       post :create, "post" => { "title" => "Exciting!" }
1022       assert_redirected_to :action => "show"
1023      
1024       follow_redirect
1025       assert_rendered_file "post/show"
1026     end
1027  
1028   Limitation: Only works for redirects to other actions within the same controller.
1029
1030 * Fixed double requiring of models with the same name as the controller
1031
1032 * Fixed that query params could be forced to nil on a POST due to the raw post fix #562 [moriq@moriq.com]
1033
1034 * Fixed that cookies shouldn't be frozen in TestRequest #571 [Eric Hodel]
1035
1036
1037 *1.4.0* (January 25th, 2005)
1038
1039 * Fixed problems with ActiveRecordStore under the development environment in Rails
1040
1041 * Fixed the ordering of attributes in the xml-decleration of Builder #540 [woeye]
1042
1043 * Added @request.raw_post as a convenience access to @request.env['RAW_POST_DATA'] #534 [Tobias Luetke]
1044
1045 * Added support for automatic id-based indexing for lists of items #532 [dblack]. Example:
1046
1047     <% @students.each do |@student| %>
1048       <%= text_field "student[]", "first_name", :size => "20" %>
1049       <%= text_field "stud