*SVN* * Fixed to_input_field_tag so it no longer explicitly uses InstanceTag.value if value was specified in the options hash [evl] * Added the possibility of having validate be protected for assert_(in)valid_column #263 [Tobias Luetke] * Added that ActiveRecordHelper#form now calls url_for on the :action option. * Added all the HTTP methods as alternatives to the generic "process" for functional testing #276 [Tobias Luetke]. Examples: # Calls Controller#miletone with a GET request process :milestone # Calls Controller#miletone with a POST request that has parameters post :milestone, { "name" => "David" } # Calls Controller#milestone with a HEAD request that has both parameters and session data head :milestone, { "id" => 1 }, { "user_id" => 23 } This is especially useful for testing idiomatic REST web services. * Added proper handling of HEAD requests, so that content isn't returned (Request#head? added as well) #277 [Eric Hodel] * Added indifference to whether @headers["Content-Type"], @headers["Content-type"], or @headers["content-type"] is used. * Added TestSession#session_id that returns an empty string to make it easier to functional test applications that doesn't use cookie-based sessions #275 [jcf] * Fixed that cached template loading would still check the file system to see if the file existed #258 [Andreas Schwarz] * Added options to tailor header tag, div id, and div class on ActiveRecordHelper#error_messages_for [josh] * Added graceful handling of non-alphanumeric names and misplaced brackets in input parameters [bitsweat] * Added a new container for cookies that makes them more intuative to use. The old methods of cookie and @cookies have been deprecated. Examples for writing: cookies["user_name"] = "david" # => Will set a simple session cookie cookies["login"] = { "value" => "XJ-122", "expires" => Time.now + 360} # => Will set a cookie that expires in 1 hour Examples for reading: cookies["user_name"] # => "david" cookies.size # => 2 Read more in ActionController::Cookies NOTE: If you were using the old accessor (cookies instead of @cookies), this could potentially break your code -- if you expect a full cookie object! * Added the opportunity to defined method_missing on a controller which will handle all requests for actions not otherwise defined #223 [timb] * Fixed AbstractRequest#remote_ip for users going through proxies - Patch #228 [Eric Hodel] * Added Request#ssl? which is shorthand for @request.protocol == "https://" * Added the choice to call form_tag with no arguments (resulting in a form posting to current action) [bitsweat] * Upgraded to Builder 1.2.1 * Added :module as an alias for :controller_prefix to url_for and friends, so you can do redirect_to(:module => "shop", :controller => "purchases") and go to /shop/purchases/ * Added support for controllers in modules through @params["module"]. * Added reloading for dependencies under cached environments like FastCGI and mod_ruby. This makes it possible to use those environments for development. This is turned on by default, but can be turned off with ActionController::Base.reload_dependencies = false in production environments. NOTE: This will only have an effect if you use the new model, service, and observer class methods to mark dependencies. All libraries loaded through require will be "forever" cached. You can, however, use ActionController::Base.load_or_require("library") to get this behavior outside of the new dependency style. * Added that controllers will automatically require their own helper if possible. So instead of doing: class MsgController < AbstractApplicationController helper :msg end ...you can just do: class MsgController < AbstractApplicationController end * Added dependencies_on(layer) to query the dependencies of a controller. Examples: MsgController.dependencies_on(:model) # => [ :post, :comment, :attachment ] MsgController.dependencies_on(:service) # => [ :notification_service ] MsgController.dependencies_on(:observer) # => [ :comment_observer ] * Added a new dependency model with the class methods model, service, and observer. Example: class MsgController < AbstractApplicationController model :post, :comment, :attachment service :notification_service observer :comment_observer end These new "keywords" remove the need for explicitly calling 'require' in most cases. The observer method even instantiates the observer as well as requiring it. * Fixed that link_to would escape & in the url again after url_for already had done so *0.9.5* (28) * Added helper_method to designate that a given private or protected method you should available as a helper in the view. [bitsweat] * Fixed assert_rendered_file so it actually verifies if that was the rendered file [htonl] * Added the option for sharing partial spacer templates just like partials themselves [radsaq] * Fixed that Russia was named twice in country_select [alexey] * Fixed request_origin to use remote_ip instead of remote_addr [bitsweat] * Fixed link_to breakage when nil was passed for html_options [alexey] * Fixed redirect_to on a virtual server setup with apache with a port other than the default where it would forget the port number [seanohalpin] * Fixed that auto-loading webrick on Windows would cause file uploads to fail [bitsweat] * Fixed issues with sending files on WEBrick by setting the proper binmode [bitsweat] * Added send_data as an alternative to send_file when the stream is not read off the filesystem but from a database or generated live [bitsweat] * Added a new way to include helpers that doesn't require the include hack and can go without the explicit require. [bitsweat] Before: module WeblogHelper def self.append_features(controller) #:nodoc: controller.ancestors.include?(ActionController::Base) ? controller.add_template_helper(self) : super end end require 'weblog_helper' class WeblogController < ActionController::Base include WeblogHelper end After: module WeblogHelper end class WeblogController < ActionController::Base helper :weblog end * Added a default content-type of "text/xml" to .rxml renders [Ryan Platte] * Fixed that when /controller/index was requested by the browser, url_for would generates wrong URLs [Ryan Platte] * Fixed a bug that would share cookies between users when using FastCGI and mod_ruby [The Robot Co-op] * Added an optional third hash parameter to the process method in functional tests that takes the session data to be used [alexey] * Added UrlHelper#mail_to to make it easier to create mailto: style ahrefs * Added better error messages for layouts declared with the .rhtml extension (which they shouldn't) [geech] * Added another case to DateHelper#distance_in_minutes to return "less than a minute" instead of "0 minutes" and "1 minute" instead of "1 minutes" * Added a hidden field to checkboxes generated with FormHelper#check_box that will make sure that the unchecked value (usually 0) is sent even if the checkbox is not checked. This relieves the controller from doing custom checking if the the checkbox wasn't checked. BEWARE: This might conflict with your run-on-the-mill work-around code. [Tobias Luetke] * Fixed error_message_on to just use the first if more than one error had been added [marcel] * Fixed that URL rewriting with /controller/ was working but /controller was not and that you couldn't use :id on index [geech] * Fixed a bug with link_to where the :confirm option wouldn't be picked up if the link was a straight url instead of an option hash * Changed scaffolding of forms to use