Skip to content

Commit

Permalink
r3022@ks: jeremy | 2005-11-12 18:40:42 -0800
Browse files Browse the repository at this point in the history
 merge to stable
 r3024@ks:  jeremy | 2005-11-12 19:00:49 -0800
 Apply [2992] to stable.  SQLite: the clone_structure_to_test and purge_test_database Rake tasks should always use the test environment.  References rails#2846.
 r3027@ks:  jeremy | 2005-11-12 22:37:45 -0800
 Apply [2994] to stable.  PostgreSQL: correct the sequence discovery fallback query.  References rails#2594.
 r3033@ks:  jeremy | 2005-11-12 23:27:13 -0800
 Apply [2996] to stable.  Much faster Oracle column reflection.  Closes rails#2848.
 r3037@ks:  jeremy | 2005-11-13 00:11:26 -0800
 Apply [2998] to stable.  PostgreSQL: last_insert_id uses select_value rather than using @connection.exec directly.
 r3053@ks:  jeremy | 2005-11-13 14:37:39 -0800
 Only include builtin filters whose filenames match /^[a-z][a-z_]*_helper.rb$/ to avoid including operating system metadata such as ._foo_helper.rb.  Closes rails#2855.
 r3055@ks:  jeremy | 2005-11-13 14:48:48 -0800
 Apply [3009] to stable:  Reapply [2942] which was elided by [2997].  References rails#2788.
 r3058@ks:  jeremy | 2005-11-13 16:09:17 -0800
 Apply [3013] to stable.  Note that the ruby-memcache bindings are required to use the memcache store.  Closes rails#2857.
 r3063@ks:  jeremy | 2005-11-13 16:13:51 -0800
 Apply [3015] to stable.  Update documentation for render :file.  Closes rails#2858.
 r3066@ks:  jeremy | 2005-11-13 20:24:18 -0800
 Apply [3017] to stable.  Update documentation for Migrations.  Closes rails#2861.
 r3070@ks:  jeremy | 2005-11-13 20:54:50 -0800
 Apply [3019] to stable.  Oracle: test case for column default parsing.  Closes rails#2788.
 r3073@ks:  jeremy | 2005-11-13 23:42:32 -0800
 Apply [3021] to stable.  Correct documentation for Base.delete_all.  Closes rails#1568.
 r3077@ks:  jeremy | 2005-11-14 14:28:21 -0800
 Apply [3035] to stable.  SQLServer: insert uses given primary key value if not nil rather than SELECT @@IDENTITY.  Closes rails#2866.
 r3120@ks:  jeremy | 2005-11-16 13:34:45 -0800
 Apply [3060] to stable.  Remove the unused, slow response_dump and session_dump variables from error pages.  Closes rails#1222.
 r3130@ks:  jeremy | 2005-11-16 14:37:47 -0800
 Apply [3063] to stable.  Remove CHANGELOG from apidoc Rake task since it isn't included with new apps anymore.
 r3148@ks:  jeremy | 2005-11-17 12:45:44 -0800
 Apply [3074] to stable.  Don't add the same conditions twice in has_one finder sql.  Closes rails#2916.
 r3149@ks:  jeremy | 2005-11-17 12:47:36 -0800
 Apply [3075] to stable.  Document :force option to create_table.  Closes rails#2921.
 r3157@ks:  jeremy | 2005-11-17 21:27:39 -0800
 Apply [3081] to stable.  Eliminate nil from newly generated logfiles.  Closes rails#2927.
 r3167@ks:  jeremy | 2005-11-18 22:47:31 -0800
 Apply [3089] to stable.  Don't generate read methods for columns whose names are not valid ruby method names.  Closes rails#2946.
 r3174@ks:  jeremy | 2005-11-19 01:53:00 -0800
 Apply [3092] to stable.  Correct boolean handling in generated reader methods.  Closes rails#2945.
 r3178@ks:  jeremy | 2005-11-19 01:59:47 -0800
 Apply [3094] to stable.  Use query methods rather than readers in boolean tests for [3092].  References rails#2949.
 r3190@ks:  jeremy | 2005-11-19 20:20:48 -0800
 Apply [3098] to stable.  Introducing the session_migration generator.  Creates an add_session_table migration.  Closes rails#2958.
 r3199@ks:  jeremy | 2005-11-19 21:13:22 -0800
 Apply [3101] to stable.  Allows generator to specify migrations directory.  Closes rails#2960.
 r3201@ks:  jeremy | 2005-11-19 21:31:47 -0800
 Apply [3103] to stable.  Document request.env and request.host.  Strip trailing whitespace.
 r3258@ks:  jeremy | 2005-11-21 00:33:59 -0800
 Apply [3139] to stable.  Use Kernel.binding rather than binding to allow columns of that name.  Closes rails#2973.
 r3269@ks:  jeremy | 2005-11-21 04:46:40 -0800
 Apply [3148] to stable.  Simpler Mysql load test.
 r3285@ks:  jeremy | 2005-11-22 13:33:04 -0800
 Apply [3162] to stable.  Model generator: correct relative path to test_helper in unit test.
 r3296@ks:  jeremy | 2005-11-23 13:38:56 -0800
 Apply [3170] to stable.  Credit ticket author.  References rails#2888.
 r3303@ks:  jeremy | 2005-11-23 17:14:31 -0800
 Apply [3051], [3052], [3053], [3059] to stable.  Brings the Firebird adapter to 1.0.  References rails#1874.
 r3305@ks:  jeremy | 2005-11-23 17:33:51 -0800
 Apply [3151] to stable.  Don't put flash in session if sessions are disabled.
 r3306@ks:  jeremy | 2005-11-23 17:39:24 -0800
 Apply [3100], [3108] to stable.  Makes new ActiveRecordStore sessions work correctly with components.
 r3307@ks:  jeremy | 2005-11-23 17:52:14 -0800
 Apply [3110] to stable.  PostgreSQL: the purge_test_database Rake task shouldn't explicitly specify the template0 template when creating a fresh test database.  References rails#2964.
 r3313@ks:  jeremy | 2005-11-23 23:03:36 -0800
 Apply [3182] to stable.  Reloading a model doesn't lose track of its connection.  Closes rails#2996.
 r3315@ks:  jeremy | 2005-11-23 23:13:48 -0800
 Apply [3184] to stable.  SQLServer: resolve column aliasing/quoting collision when using limit or offset in an eager find.  Closes rails#2974.
 r3339@ks:  jeremy | 2005-12-01 17:03:16 -0800
 Apply [3202] to stable.  Firebird: updated for FireRuby 0.4.0.  Closes rails#3009.
 r3363@ks:  jeremy | 2005-12-06 22:26:27 -0800
 Apply rails#428 changesets to stable: r3000, r3001, r3002, r3025, r3045, r3096, r3148, r3152, r3165, r3189, r3195, r3205, r3216, r3219, r3221, r3222.  Closes rails#428.
 r3372@ks:  jeremy | 2005-12-07 20:25:20 -0800
 Apply [3233] to stable.  Oracle: use syntax compatible with Oracle 8.  Closes rails#3131.
 r3375@ks:  jeremy | 2005-12-07 20:36:13 -0800
 Apply [3235] to stable.  PostgreSQL: more robust sequence name discovery.  Closes rails#3087.
 r3378@ks:  jeremy | 2005-12-07 20:41:47 -0800
 Apply [3237] to stable.  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.  Closes rails#3070.
 r3379@ks:  jeremy | 2005-12-07 20:42:31 -0800
 Don't warn on keep_flash in test.
 r3387@ks:  jeremy | 2005-12-07 20:48:42 -0800
 Apply [3242] to stable.  Reloading an instance refreshes its aggregations as well as its associations.  Closes rails#3024.
 r3389@ks:  jeremy | 2005-12-07 20:52:39 -0800
 Apply [3244] to stable.  SQLite: find database file when RAILS_ROOT is a symlink.  Closes rails#3116.
 r3392@ks:  jeremy | 2005-12-07 21:10:42 -0800
 Apply [3246] to stable.  MySQL: more robust test for nullified result hashes.  Closes rails#3124.
 r3401@ks:  jeremy | 2005-12-07 23:30:11 -0800
 Apply [3252] to stable.  Oracle: active? performs a select instead of a commit.  Closes rails#3133.
 r3404@ks:  jeremy | 2005-12-08 15:24:44 -0800
 Apply [3254] to stable.  Fix some test failures due to MySQL assumptions.  References rails#3149.
 r3407@ks:  jeremy | 2005-12-09 10:39:00 -0800
 Apply [3256] to stable.  Generator copies files in binary mode.  Closes rails#3156.
 r3410@ks:  jeremy | 2005-12-09 10:48:32 -0800
 Apply [3258] to stable.  Fix shebang handling for empty files.  Closes rails#2927.
 r3413@ks:  jeremy | 2005-12-09 15:03:42 -0800
 Apply [3260] to stable.  Fix bundled mysql.rb to correctly check for PROTO_41.  Fixed scramble41 with nil password.  Fixed change_user with PROTO_41.
 r3416@ks:  jeremy | 2005-12-09 15:07:21 -0800
 Apply [3262] to stable.  Generator looks in vendor/generators also.
 r3419@ks:  jeremy | 2005-12-09 15:36:50 -0800
 Apply [3165] to stable. MySQL, PostgreSQL: reconnect! also reconfigures the connection. Otherwise, the connection 'loses' its settings if it times out and is reconnected. References rails#2978.
 r3420@ks:  jeremy | 2005-12-09 15:38:30 -0800
 Apply [3264] to stable.  MySQL: ensure that @config is set.
 r3421@ks:  jeremy | 2005-12-09 15:42:40 -0800
 Apply [3265] to stable.  Name vendor/generators source differently from lib/generators source.
 r3429@ks:  jeremy | 2005-12-09 16:55:16 -0800
 Apply [3270] SQLServer rollup to stable.
 r3435@ks:  jeremy | 2005-12-10 13:40:43 -0800
 Apply [3274] to stable.  MySQL: fixes for the bundled mysql.rb driver.  Closes rails#3160.
 r3457@ks:  jeremy | 2005-12-13 08:52:39 -0800
 Apply [3293] to stable.  MySQL: allow encoding option for mysql.rb driver.
 r3458@ks:  jeremy | 2005-12-13 09:33:50 -0800
 Roll back [3245] on stable.  References rails#3116.
 r3465@ks:  jeremy | 2005-12-13 10:15:33 -0800
 Apply [3298] to stable.  Don't used defined? on a scoped constant since it results in a const_missing call.
 r3724@ks:  jeremy | 2006-02-09 10:13:41 -0800
 Apply [3554] to stable. PostgreSQL: correctly parse negative integer column defaults. Closes rails#3776.
 r3730@ks:  jeremy | 2006-02-09 11:42:57 -0800
 Apply [3559] to stable. Closes rails#3581.
 r3846@ks:  jeremy | 2006-02-26 15:24:58 -0800
 silence test/unit whining DefaultsTest is empty
 r3847@ks:  jeremy | 2006-02-26 15:26:53 -0800
 Apply [3674] to stable. Closes rails#3591.
 r4960@ks:  jeremy | 2006-08-06 23:56:18 -0700
 Merged to stable: change the request.env example in AC::Base docs to a var that exists (REMOTE_IP doesn't) and isn't already wrapped by a request method (i.e. request.remote_ip). References rails#5113.
 r4961@ks:  jeremy | 2006-08-07 00:11:59 -0700
 Merged to stable: add :status option to send_data and send_file. Defaults to '200 OK'. References rails#5243.
 r4962@ks:  jeremy | 2006-08-07 00:18:42 -0700
 Merged to stable: real files and symlinks should be treated the same when compiling templates. References rails#5438.
 r4963@ks:  jeremy | 2006-08-07 00:26:42 -0700
 Merged to stable: Added ActionController.filter_parameter_logging that makes it easy to remove passwords, credit card numbers, and other sensitive information from being logged when a request is handled. References rails#1897.
 r4964@ks:  jeremy | 2006-08-07 00:33:32 -0700
 Merged to stable: correct spurious documentation example code which results in a SyntaxError. References [4210].
 r4965@ks:  jeremy | 2006-08-07 00:38:04 -0700
 Merged to stable: remote_form_for can leave out the object parameter and default to the instance variable of the object_name, just like form_for. References [4215].
 r4966@ks:  jeremy | 2006-08-07 00:48:40 -0700
 Merged to stable: update inconsistent migrations documentation. References rails#4683.
 r4967@ks:  jeremy | 2006-08-07 00:52:34 -0700
 Merge to stable: cache CgiRequest#request_parameters so that multiple calls don't re-parse multipart data. References [4256].
 r4968@ks:  jeremy | 2006-08-07 00:55:51 -0700
 Merge to stable: only require redcloth/bluecloth if they are not already loaded. References [4257].
 r4977@ks:  jeremy | 2006-08-07 01:08:02 -0700
 Merge to stable: skip silence stderr test if we can't STDERR.tell
 r4978@ks:  jeremy | 2006-08-07 01:13:00 -0700
 Merge to stable: update layout and content_for documentation to use yield rather than magic @content_for_layout instance variables. References [4263].
 r4979@ks:  jeremy | 2006-08-07 01:16:43 -0700
 Merge to stable: add documentation for redirect_to :back's RedirectBackError exception; remove all remaining references to @params in the documentation. References [4267], [4268].
 r4980@ks:  jeremy | 2006-08-07 01:18:04 -0700
 Merge to stable: fix documentation indentation.
 r4981@ks:  jeremy | 2006-08-07 01:28:34 -0700
 Merge to stable: mention in docs that config.frameworks doesn't work when getting Rails via Gems; documentation for AbstractRequest.  References rails#4857, rails#4895.
 r4982@ks:  jeremy | 2006-08-07 01:45:26 -0700
 Merge to stable: fix syntax error in documentation. References rails#4679.
 r4983@ks:  jeremy | 2006-08-07 01:50:47 -0700
 Merge to stable: Enhance documentation for setting headers in integration tests. Skip auto HTTP prepending when its already there. References rails#4079.  Add warning about the proper way to validate the presence of a foreign key. References rails#4147.
 r4984@ks:  jeremy | 2006-08-07 02:08:00 -0700
 Merge to stable: ActionController::Base Summary documentation rewrite; Fix text_helper.rb documentation rendering; Fixes bad rendering of JavaScriptMacrosHelper rdoc.  References rails#4725, rails#4900, rails#4910.
 r4985@ks:  jeremy | 2006-08-07 02:14:18 -0700
 Merge to stable: documentation fix: integration test scripts don't require integration_test. References rails#4914.


git-svn-id: http://svn-commit.rubyonrails.org/rails/branches/stable@4708 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
jeremy committed Aug 7, 2006
1 parent 140e85c commit 94a1758
Show file tree
Hide file tree
Showing 31 changed files with 475 additions and 225 deletions.
5 changes: 5 additions & 0 deletions actionmailer/CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
*SVN*

* Correct spurious documentation example code which results in a SyntaxError. [Marcel Molina Jr.]

* Mailer template root applies to a class and its subclasses rather than acting globally. #5555 [somekool@gmail.com]


*1.2.3* (June 29th, 2006)

* Depend on Action Pack 1.12.3
Expand Down
2 changes: 1 addition & 1 deletion actionmailer/lib/action_mailer/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ module ActionMailer #:nodoc:
# def signup_notification(recipient)
# recipients recipient.email_address_with_name
# subject "New account information"
# body { "account" => recipient }
# body "account" => recipient
# from "system@example.com"
# end
#
Expand Down
34 changes: 31 additions & 3 deletions actionpack/CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,11 +1,39 @@
*1.12.3* (June 28th, 2006)
=======
*SVN*

* Documentation fix: integration test scripts don't require integration_test. #4914 [Frederick Ros <sl33p3r@free.fr>]

* ActionController::Base Summary documentation rewrite. #4900 [kevin.clark@gmail.com]

* Fix text_helper.rb documentation rendering. #4725 [Frederick Ros]

* Fixes bad rendering of JavaScriptMacrosHelper rdoc. #4910 [Frederick Ros]

* Enhance documentation for setting headers in integration tests. Skip auto HTTP prepending when its already there. #4079 [Rick Olson]

* Documentation for AbstractRequest. #4895 [kevin.clark@gmail.com]

* Remove all remaining references to @params in the documentation. [Marcel Molina Jr.]

* Add documentation for redirect_to :back's RedirectBackError exception. [Marcel Molina Jr.]

* Update layout and content_for documentation to use yield rather than magic @content_for instance variables. [Marcel Molina Jr.]

* Cache CgiRequest#request_parameters so that multiple calls don't re-parse multipart data. [Rick]

* Fixed that remote_form_for can leave out the object parameter and default to the instance variable of the object_name, just like form_for [DHH]

* Added ActionController.filter_parameter_logging that makes it easy to remove passwords, credit card numbers, and other sensitive information from being logged when a request is handled. #1897 [jeremye@bsa.ca.gov]

* Fixed that real files and symlinks should be treated the same when compiling templates. #5438 [zachary@panandscan.com]

* Add :status option to send_data and send_file. Defaults to '200 OK'. #5243 [Manfred Stienstra <m.stienstra@fngtps.com>]

* Update documentation for erb trim syntax. #5651 [matt@mattmargolis.net]

* Short documentation to mention use of Mime::Type.register. #5710 [choonkeat@gmail.com]

* Pass :id => nil or :class => nil to error_messages_for to supress that html attribute. #3586 [olivier_ansaldi@yahoo.com, sebastien@goetzilla.info]

*1.12.3* (June 28th, 2006)

* Fix broken traverse_to_controller. We now:
Look for a _controller.rb file under RAILS_ROOT to load.
Expand Down
10 changes: 7 additions & 3 deletions actionpack/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,12 @@ Rake::RDocTask.new { |rdoc|
rdoc.title = "Action Pack -- On rails from request to response"
rdoc.options << '--line-numbers' << '--inline-source'
rdoc.template = "#{ENV['template']}.rb" if ENV['template']
rdoc.rdoc_files.include('README', 'RUNNING_UNIT_TESTS', 'CHANGELOG')
rdoc.rdoc_files.include('lib/**/*.rb')
if ENV['DOC_FILES']
rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
else
rdoc.rdoc_files.include('README', 'RUNNING_UNIT_TESTS', 'CHANGELOG')
rdoc.rdoc_files.include('lib/**/*.rb')
end
}

# Create compressed packages
Expand Down Expand Up @@ -144,4 +148,4 @@ task :release => [ :package ] do
puts release_command
system(release_command)
end
end
end
173 changes: 102 additions & 71 deletions actionpack/lib/action_controller/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,15 @@ def initialize(message = nil)
end
end

# Action Controllers are made up of one or more actions that performs its purpose and then either renders a template or
# redirects to another action. An action is defined as a public method on the controller, which will automatically be
# made accessible to the web-server through a mod_rewrite mapping. A sample controller could look like this:
# Action Controllers are the core of a web request in Rails. They are made up of one or more actions that are executed
# on request and then either render a template or redirect to another action. An action is defined as a public method
# on the controller, which will automatically be made accessible to the web-server through Rails Routes.
#
# A sample controller could look like this:
#
# class GuestBookController < ActionController::Base
# def index
# @entries = Entry.find_all
# @entries = Entry.find(:all)
# end
#
# def sign
Expand All @@ -64,26 +66,17 @@ def initialize(message = nil)
# end
# end
#
# GuestBookController.template_root = "templates/"
# GuestBookController.process_cgi
#
# All actions assume that you want to render a template matching the name of the action at the end of the performance
# unless you tell it otherwise. The index action complies with this assumption, so after populating the @entries instance
# variable, the GuestBookController will render "templates/guestbook/index.rhtml".
# Actions, by default, render a template in the <tt>app/views</tt> directory corresponding to the name of the controller and action
# after executing code in the action. For example, the +index+ action of the +GuestBookController+ would render the
# template <tt>app/views/guestbook/index.rhtml</tt> by default after populating the <tt>@entries</tt> instance variable.
#
# Unlike index, the sign action isn't interested in rendering a template. So after performing its main purpose (creating a
# new entry in the guest book), it sheds the rendering assumption and initiates a redirect instead. This redirect works by
# returning an external "302 Moved" HTTP response that takes the user to the index action.
# Unlike index, the sign action will not render a template. After performing its main purpose (creating a
# new entry in the guest book), it initiates a redirect instead. This redirect works by returning an external
# "302 Moved" HTTP response that takes the user to the index action.
#
# The index and sign represent the two basic action archetypes used in Action Controllers. Get-and-show and do-and-redirect.
# Most actions are variations of these themes.
#
# Also note that it's the final call to <tt>process_cgi</tt> that actually initiates the action performance. It will extract
# request and response objects from the CGI
#
# When Action Pack is used inside of Rails, the template_root is automatically configured and you don't need to call process_cgi
# yourself.
#
# == Requests
#
# Requests are processed by the Action Controller framework by extracting the value of the "action" key in the request parameters.
Expand All @@ -94,16 +87,16 @@ def initialize(message = nil)
# The full request object is available with the request accessor and is primarily used to query for http headers. These queries
# are made by accessing the environment hash, like this:
#
# def hello_ip
# location = request.env["REMOTE_IP"]
# render :text => "Hello stranger from #{location}"
# def server_ip
# location = request.env["SERVER_ADDR"]
# render :text => "This server hosted at #{location}"
# end
#
# == Parameters
#
# All request parameters, whether they come from a GET or POST request, or from the URL, are available through the params hash.
# So an action that was performed through /weblog/list?category=All&limit=5 will include { "category" => "All", "limit" => 5 }
# in params.
# All request parameters, whether they come from a GET or POST request, or from the URL, are available through the params method
# which returns a hash. For example, an action that was performed through <tt>/weblog/list?category=All&limit=5</tt> will include
# <tt>{ "category" => "All", "limit" => 5 }</tt> in params.
#
# It's also possible to construct multi-dimensional parameter hashes by specifying keys using brackets, such as:
#
Expand All @@ -116,30 +109,37 @@ def initialize(message = nil)
#
# == Sessions
#
# Sessions allows you to store objects in memory between requests. This is useful for objects that are not yet ready to be persisted,
# Sessions allows you to store objects in between requests. This is useful for objects that are not yet ready to be persisted,
# such as a Signup object constructed in a multi-paged process, or objects that don't change much and are needed all the time, such
# as a User object for a system that requires login. The session should not be used, however, as a cache for objects where it's likely
# they could be changed unknowingly. It's usually too much work to keep it all synchronized -- something databases already excel at.
#
# You can place objects in the session by using the <tt>session</tt> hash accessor:
# You can place objects in the session by using the <tt>session</tt> method, which accesses a hash:
#
# session[:person] = Person.authenticate(user_name, password)
#
# And retrieved again through the same hash:
#
# Hello #{session[:person]}
#
# Any object can be placed in the session (as long as it can be Marshalled). But remember that 1000 active sessions each storing a
# 50kb object could lead to a 50MB memory overhead. In other words, think carefully about size and caching before resorting to the use
# of the session.
#
# For removing objects from the session, you can either assign a single key to nil, like <tt>session[:person] = nil</tt>, or you can
# remove the entire session with reset_session.
#
# By default, sessions are stored on the file system in <tt>RAILS_ROOT/tmp/sessions</tt>. Any object can be placed in the session
# (as long as it can be Marshalled). But remember that 1000 active sessions each storing a 50kb object could lead to a 50MB store on the filesystem.
# In other words, think carefully about size and caching before resorting to the use of the session on the filesystem.
#
# An alternative to storing sessions on disk is to use ActiveRecordStore to store sessions in your database, which can solve problems
# caused by storing sessions in the file system and may speed up your application. To use ActiveRecordStore, uncomment the line:
#
# config.action_controller.session_store = :active_record_store
#
# in your <tt>environment.rb</tt> and run <tt>rake db:sessions:create</tt>.
#
# == Responses
#
# Each action results in a response, which holds the headers and document to be sent to the user's browser. The actual response
# object is generated automatically through the use of renders and redirects, so it's normally nothing you'll need to be concerned about.
# object is generated automatically through the use of renders and redirects and requires no user intervention.
#
# == Renders
#
Expand All @@ -161,42 +161,31 @@ def initialize(message = nil)
# def search
# @results = Search.find(params[:query])
# case @results
# when 0 then render :action=> "no_results"
# when 1 then render :action=> "show"
# when 2..10 then render :action=> "show_many"
# when 0 then render :action => "no_results"
# when 1 then render :action => "show"
# when 2..10 then render :action => "show_many"
# end
# end
#
# Read more about writing ERb and Builder templates in link:classes/ActionView/Base.html.
#
# == Redirects
#
# Redirecting is what actions that update the model do when they're done. The <tt>save_post</tt> method shouldn't be responsible for also
# showing the post once it's saved -- that's the job for <tt>show_post</tt>. So once <tt>save_post</tt> has completed its business, it'll
# redirect to <tt>show_post</tt>. All redirects are external, which means that when the user refreshes his browser, it's not going to save
# the post again, but rather just show it one more time.
#
# This sounds fairly simple, but the redirection is complicated by the quest for a phenomenon known as "pretty urls". Instead of accepting
# the dreadful being that is "weblog_controller?action=show&post_id=5", Action Controller goes out of its way to represent the former as
# "/weblog/show/5". And this is even the simple case. As an example of a more advanced pretty url consider
# "/library/books/ISBN/0743536703/show", which can be mapped to books_controller?action=show&type=ISBN&id=0743536703.
#
# Redirects work by rewriting the URL of the current action. So if the show action was called by "/library/books/ISBN/0743536703/show",
# we can redirect to an edit action simply by doing <tt>redirect_to(:action => "edit")</tt>, which could throw the user to
# "/library/books/ISBN/0743536703/edit". Naturally, you'll need to setup the routes configuration file to point to the proper controller
# and action in the first place, but once you have, it can be rewritten with ease.
#
# Let's consider a bunch of examples on how to go from "/clients/37signals/basecamp/project/dash" to somewhere else:
#
# redirect_to(:action => "edit") =>
# /clients/37signals/basecamp/project/dash
#
# redirect_to(:client_name => "nextangle", :project_name => "rails") =>
# /clients/nextangle/rails/project/dash
# Redirects are used to move from one action to another. For example, after a <tt>create</tt> action, which stores a blog entry to a database,
# we might like to show the user the new entry. Because we're following good DRY principles (Don't Repeat Yourself), we're going to reuse (and redirect to)
# a <tt>show</tt> action that we'll assume has already been created. The code might look like this:
#
# Those redirects happen under the configuration of:
# def create
# @entry = Entry.new(params[:entry])
# if @entry.save
# # The entry was saved correctly, redirect to show
# redirect_to :action => 'show', :id => @entry.id
# else
# # things didn't go so well, do something else
# end
# end
#
# map.connect 'clients/:client_name/:project_name/:controller/:action'
# In this case, after saving our new entry to the database, the user is redirected to the <tt>show</tt> method which is then executed.
#
# == Calling multiple redirects or renders
#
Expand All @@ -214,15 +203,6 @@ def initialize(message = nil)
# render :action => "overthere" # won't be called unless monkeys is nil
# end
#
# == Environments
#
# Action Controller works out of the box with CGI, FastCGI, and mod_ruby. CGI and mod_ruby controllers are triggered just the same using:
#
# WeblogController.process_cgi
#
# FastCGI controllers are triggered using:
#
# FCGI.each_cgi{ |cgi| WeblogController.process_cgi(cgi) }
class Base
DEFAULT_RENDER_STATUS_CODE = "200 OK"

Expand Down Expand Up @@ -263,10 +243,10 @@ class Base

# Modern REST web services often need to submit complex data to the web application.
# The param_parsers hash lets you register handlers wich will process the http body and add parameters to the
# @params hash. These handlers are invoked for post and put requests.
# <tt>params</tt> hash. These handlers are invoked for post and put requests.
#
# By default application/xml is enabled. A XmlSimple class with the same param name as the root will be instanciated
# in the @params. This allows XML requests to mask themselves as regular form submissions, so you can have one
# in the <tt>params</tt>. This allows XML requests to mask themselves as regular form submissions, so you can have one
# action serve both regular forms and web service requests.
#
# Example of doing your own parser for a custom content type:
Expand Down Expand Up @@ -366,6 +346,53 @@ def hidden_actions
def hide_action(*names)
write_inheritable_attribute(:hidden_actions, hidden_actions | names.collect { |n| n.to_s })
end

# Replace sensitive paramater data from the request log.
# Filters paramaters that have any of the arguments as a substring.
# Looks in all subhashes of the param hash for keys to filter.
# If a block is given, each key and value of the paramater hash and all
# subhashes is passed to it, the value or key
# can be replaced using String#replace or similar method.
#
# Examples:
# filter_parameter_logging
# => Does nothing, just slows the logging process down
#
# filter_parameter_logging :password
# => replaces the value to all keys matching /password/i with "[FILTERED]"
#
# filter_parameter_logging :foo, "bar"
# => replaces the value to all keys matching /foo|bar/i with "[FILTERED]"
#
# filter_parameter_logging { |k,v| v.reverse! if k =~ /secret/i }
# => reverses the value to all keys matching /secret/i
#
# filter_parameter_logging(:foo, "bar") { |k,v| v.reverse! if k =~ /secret/i }
# => reverses the value to all keys matching /secret/i, and
# replaces the value to all keys matching /foo|bar/i with "[FILTERED]"
def filter_parameter_logging(*filter_words, &block)
parameter_filter = Regexp.new(filter_words.collect{ |s| s.to_s }.join('|'), true) if filter_words.length > 0

define_method(:filter_parameters) do |unfiltered_parameters|
filtered_parameters = {}

unfiltered_parameters.each do |key, value|
if key =~ parameter_filter
filtered_parameters[key] = '[FILTERED]'
elsif value.is_a?(Hash)
filtered_parameters[key] = filter_parameters(value)
elsif block_given?
key, value = key.dup, value.dup
yield key, value
filtered_parameters[key] = value
else
filtered_parameters[key] = value
end
end

filtered_parameters
end
end
end

public
Expand Down Expand Up @@ -803,6 +830,10 @@ def default_url_options(options) #:doc:
# redirect_to :back
#
# The redirection happens as a "302 Moved" header.
#
# When using <tt>redirect_to :back</tt>, if there is no referrer,
# RedirectBackError will be raised. You may specify some fallback
# behavior for this case by rescueing RedirectBackError.
def redirect_to(options = {}, *parameters_for_method_reference) #:doc:
case options
when %r{^\w+://.*}
Expand Down Expand Up @@ -901,7 +932,7 @@ def log_processing
if logger
logger.info "\n\nProcessing #{controller_class_name}\##{action_name} (for #{request_origin}) [#{request.method.to_s.upcase}]"
logger.info " Session ID: #{@session.session_id}" if @session and @session.respond_to?(:session_id)
logger.info " Parameters: #{@params.inspect}"
logger.info " Parameters: #{respond_to?(:filter_parameters) ? filter_parameters(@params).inspect : @params.inspect}"
end
end

Expand Down
6 changes: 3 additions & 3 deletions actionpack/lib/action_controller/caching.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ def self.included(base) #:nodoc:
#
# class WeblogController < ActionController::Base
# def update
# List.update(@params["list"]["id"], @params["list"])
# expire_page :action => "show", :id => @params["list"]["id"]
# redirect_to :action => "show", :id => @params["list"]["id"]
# List.update(params[:list][:id], params[:list])
# expire_page :action => "show", :id => params[:list][:id]
# redirect_to :action => "show", :id => params[:list][:id]
# end
# end
#
Expand Down
11 changes: 6 additions & 5 deletions actionpack/lib/action_controller/cgi_process.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,12 @@ def query_parameters
end

def request_parameters
if ActionController::Base.param_parsers.has_key?(content_type)
CGIMethods.parse_formatted_request_parameters(content_type, @env['RAW_POST_DATA'])
else
CGIMethods.parse_request_parameters(@cgi.params)
end
@request_parameters ||=
if ActionController::Base.param_parsers.has_key?(content_type)
CGIMethods.parse_formatted_request_parameters(content_type, @env['RAW_POST_DATA'])
else
CGIMethods.parse_request_parameters(@cgi.params)
end
end

def cookies
Expand Down
Loading

0 comments on commit 94a1758

Please sign in to comment.