aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
Commit message (Collapse)AuthorAgeFilesLines
* Ensure external redirects are explicitly allowedGannon McGibbon2019-01-173-17/+39
| | | | Add `fallback_location` and `allow_other_host` options to `redirect_to`.
* Document that `format.any` can match all formatsDaniel Schierbeck2019-01-161-0/+8
| | | I had to dig around the code to discover this, since I had a use case for the behavior.
* Capture parsing errors for ActionController::ParamsWrapper#process_actionHaroon Ahmed2019-01-081-16/+17
|
* Remove mention about `Test::Unit::TestCase` [ci skip]bogdanvlviv2019-01-021-3/+0
| | | | | | We've switched from `Test::Unit::TestCase` to `ActiveSupport::TestCase` since Rails 2.3. See https://edgeguides.rubyonrails.org/2_3_release_notes.html#other-railties-changes
* Import Action MailboxGeorge Claghorn2018-12-251-12/+11
|
* Enable `Style/RedundantBegin` cop to avoid newly adding redundant begin blockRyuta Kamizono2018-12-211-5/+3
| | | | | | | | | | Currently we sometimes find a redundant begin block in code review (e.g. https://github.com/rails/rails/pull/33604#discussion_r209784205). I'd like to enable `Style/RedundantBegin` cop to avoid that, since rescue/else/ensure are allowed inside do/end blocks in Ruby 2.5 (https://bugs.ruby-lang.org/issues/12906), so we'd probably meets with that situation than before.
* Use native `Array#append`, `Array#prepend`, `Hash#transform_keys`, and ↵Ryuta Kamizono2018-12-202-4/+0
| | | | | | | | | | `Hash#transform_keys!` Since Rails 6 requires Ruby 2.5. https://github.com/ruby/ruby/blob/ruby_2_5/NEWS Follow up #34754.
* Allow nil params on controller HTTP test methodsr7kamura2018-12-181-2/+2
|
* colorize the unpermitted params log messageblahed2018-12-031-1/+1
|
* Allow rescue from parameter parse errorsGannon McGibbon2018-11-131-1/+4
| | | | [Gannon McGibbon + Josh Cheek]
* Merge pull request #34314 from bf4/patch-2Gannon McGibbon2018-10-301-1/+1
|\ | | | | ActionController::API *does* support cookies, sessions
| * ActionController::API *does* support cookies, sessionsBenjamin Fleischer2018-10-251-1/+1
| | | | | | | | | | | | | | | | ActionController::Metal provides session support by delegating `session to the request (`"@_request"`) https://github.com/rails/rails/blob/a3dcba42e2422eb9c2e77011a39ce72dc934b420/actionpack/lib/action_controller/metal.rb#L149 Though the ActionController::Cookies modules isn't included, it's really a convenience for providing a first class `cookies` object. *all* ActionController::Metal subclasses support setting cookies via the `session` object.
* | We don't want these internal methods as public methods in our controllersAkira Matsuda2018-10-301-23/+25
|/ | | | or they would be listed in `action_methods`
* Fix `ActionController::Parameters#each_value` and add changelog entry to ↵Bogdan2018-10-151-1/+1
| | | | | | | | | | | | | this method (#34210) * Fix `ActionController::Parameters#each_value` `each_value` should yield with "value" of the params instead of "value" as an array. Related to #33979 * Add changelog entry about `ActionController::Parameters#each_value`. Follow up #33979
* Add allocations to template renderer subscriptionEileen Uchitelle2018-10-101-2/+5
| | | | | | | | | | | | | | | | | | | | | | | This PR adds the allocations to the instrumentation for template and partial rendering. Before: ``` Rendering posts/new.html.erb within layouts/application Rendered posts/_form.html.erb (9.7ms) Rendered posts/new.html.erb within layouts/application (10.9ms) Completed 200 OK in 902ms (Views: 890.8ms | ActiveRecord: 0.8ms) ``` After: ``` Rendering posts/new.html.erb within layouts/application Rendered posts/_form.html.erb (Duration: 7.1ms | Allocations: 6004) Rendered posts/new.html.erb within layouts/application (Duration: 8.3ms | Allocations: 6654) Completed 200 OK in 858ms (Views: 848.4ms | ActiveRecord: 0.4ms | Allocations: 1539564) ```
* Fix call sitesGannon McGibbon2018-10-021-1/+1
|
* Add `Style/RedundantFreeze` to remove redudant `.freeze`Yasuo Honda2018-09-296-8/+8
| | | | | | | | | | | | | | | | | | | | | Since Rails 6.0 will support Ruby 2.4.1 or higher `# frozen_string_literal: true` magic comment is enough to make string object frozen. This magic comment is enabled by `Style/FrozenStringLiteralComment` cop. * Exclude these files not to auto correct false positive `Regexp#freeze` - 'actionpack/lib/action_dispatch/journey/router/utils.rb' - 'activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb' It has been fixed by https://github.com/rubocop-hq/rubocop/pull/6333 Once the newer version of RuboCop released and available at Code Climate these exclude entries should be removed. * Replace `String#freeze` with `String#-@` manually if explicit frozen string objects are required - 'actionpack/test/controller/test_case_test.rb' - 'activemodel/test/cases/type/string_test.rb' - 'activesupport/lib/active_support/core_ext/string/strip.rb' - 'activesupport/test/core_ext/string_ext_test.rb' - 'railties/test/generators/actions_test.rb'
* Added ActionController::Parameters.each_value methodLukas Zapletal2018-09-271-0/+8
|
* Merge pull request #33829 from mtsmfm/encode-filenameKasper Timm Hansen2018-09-231-4/+3
|\ | | | | Encode Content-Disposition filenames on send_data and send_file
| * Encode Content-Disposition filenames on send_data and send_fileFumiaki MATSUSHIMA2018-09-131-4/+3
| |
* | Enable `Performance/UnfreezeString` copyuuji.yaginuma2018-09-234-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Ruby 2.3 or later, `String#+@` is available and `+@` is faster than `dup`. ```ruby # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" gem "benchmark-ips" end Benchmark.ips do |x| x.report('+@') { +"" } x.report('dup') { "".dup } x.compare! end ``` ``` $ ruby -v benchmark.rb ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] Warming up -------------------------------------- +@ 282.289k i/100ms dup 187.638k i/100ms Calculating ------------------------------------- +@ 6.775M (± 3.6%) i/s - 33.875M in 5.006253s dup 3.320M (± 2.2%) i/s - 16.700M in 5.032125s Comparison: +@: 6775299.3 i/s dup: 3320400.7 i/s - 2.04x slower ```
* | Make sure the flash method is defined even if helpers are not presentRafael Mendonça França2018-09-131-5/+3
| |
* | Merge pull request #33569 from eric-hemasystems/conditional-flash-helperRafael França2018-09-131-3/+5
|\ \ | |/ |/| Conditionally use `helper_method` in Flash concern
| * Conditionally use `helper_method` in Flash concernEric Anderson2018-08-091-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I was attempting to use the `flash` functionality in a `Metal` controller. When including the `flash` concern I received the following error: NoMethodError: undefined method `helper_method'.... Either: - `AbstractController::Helpers` should be a dependency of `ActionController::Flash` - `ActionController::Flash` should not require the existence of `AbstractController::Helpers`. Since my use case (set a flash and redirect) has no need for the helper method and that is a common use case, making the dependency conditional seemed the better option. NOTE: This is similar to issue #21067 only the error is within Rails itself while that issue had the error within Devise.
* | Update documentation to ActionController::ConditionalGetAnatoly Mikhaylov2018-09-031-0/+6
| | | | | | | | Two implemented but undocumented features are to help indicate that cache is fresh for 3 hours, and it may continue to be served stale for up to an additional 60 seconds to parallel requests for the same resource or up to 5 minutes while errors are being returned back while the initial synchronous revalidation is attempted.
* | Faster permitted_scalar_filterschneems2018-08-311-8/+20
| | | | | | | | | | | | | | | | | | | | | | When running with code triage and derailed benchmarks and focusing on this file: Before 16199 /Users/rschneeman/Documents/projects/rails/actionpack/lib/action_controller/metal/strong_parameters.r After 2280 /Users/rschneeman/Documents/projects/rails/actionpack/lib/action_controller/metal/strong_parameters.rb
* | [ci skip] Document permitted_scalar_filterschneems2018-08-301-0/+10
| |
* | Merge pull request #33718 from kddeisz/permit-listMatthew Draper2018-08-295-12/+12
|\ \ | | | | | | Finish converting whitelist and blacklist references
| * | Permit list usage cleanup and clearer documentationKevin Deisz2018-08-272-4/+4
| | |
| * | Convert remaining usage of whitelist and blacklistKevin Deisz2018-08-241-2/+2
| | |
| * | Convert over the rest of the whitelist referencesKevin Deisz2018-08-244-8/+8
| | |
* | | Call block to #redirect_to in controller context (#33735)speckins2018-08-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Call block to #redirect_to in controller context The documentation for ActionController::Redirecting states that a Proc argument "will be executed in the controller's context." However, unless #instance_eval is used (removed in 6b3ad0ca), that statement is false for procs defined outside of the controller instance. This commit restores the documented behavior. Fixes #33731. * Move test proc into a constant in another class Per @rafaelfranca's suggestion. [Steven Peckins + Rafael Mendonça França]
* | | Format respond_to method as code in doc [ci skip]Rob Zolkos2018-08-251-1/+1
|/ / | | | | | | | | This updates the `respond_to` method to be code formatted rather than plain text (as it refers to the method)
* | Use string lengths instead of regexp to extract pathMatthew Draper2018-08-231-2/+1
| | | | | | | | | | | | | | | | | | | | The regexp was introduced in 186ac4cdaa911a9af659a29f2179a19b99dea13b, and looks cosmetic. While they should be functionally identical in theory, in practice, case insensitive (but preserving) filesystems can give results that are differently-cased from the pattern we supplied. I don't know how to force the filesystem to do the surprising thing, even when running in an environment that _could_, so no new test.
* | Fix unclosed tags [ci skip]yuuji.yaginuma2018-08-181-1/+1
| |
* | Fix rubocop offensesbogdanvlviv2018-08-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Layout/TrailingWhitespace ``` actionpack/lib/action_controller/metal/request_forgery_protection.rb:49:4: C: Layout/TrailingWhitespace: Trailing whitespace detected. # ^ ``` Related to c3787494eda - Performance/StartWith ``` tasks/release.rb:108:44: C: Performance/StartWith: Use String#start_with? instead of a regex match anchored to the beginning of the string. header += "* No changes.\n\n\n" if current_contents =~ /\A##/ ```
* | Merge pull request #31640 from gingerlime/patch-1Richard Schneeman2018-08-101-4/+11
|\ \ | |/ |/| fixes #27157 CSRF protection documentation
| * fixes #27157 CSRF protection documentationgingerlime2018-01-051-4/+11
| | | | | | | | | | * removed reference to GET requests where it applies also to other HTTP verbs * updated documentation to try and better explain how CSRF protection works with XHR, and the potential exposure with CORS
* | Merge pull request #28937 from maclover7/jm-fix-28927Rafael França2018-07-311-1/+1
|\ \ | | | | | | Default content type for `head` is `text/html`
| * | Default content type for `head` is `text/html`Jon Moss2017-04-301-1/+1
| | | | | | | | | | | | Otherwise Mime::NullType will be returned as the `Content-Type` header.
* | | Raises exception when respond_to called multiple times in incompatible wayPatrick Toomey2018-07-302-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nesting respond_to calls can lead to unexpected behavior, so it should be avoided. Currently, the first respond_to format match sets the content-type for the resulting response. But, if a nested respond_to occurs, it is possible to match on a different format. For example: respond_to do |outer_type| outer_type.js do respond_to do |inner_type| inner_type.html { render body: "HTML" } end end end Browsers will often include */* in their Accept headers. In the above example, such a request would result in the outer_type.js match setting the content- type of the response to text/javascript, while the inner_type.html match will cause the actual response to return "HTML". This change tries to minimize potential breakage by only raising an exception if the nested respond_to calls are in conflict with each other. So, something like the following example would not raise an exception: respond_to do |outer_type| outer_type.js do respond_to do |inner_type| inner_type.js { render body: "JS" } end end end While the above is nested, it doesn't affect the content-type of the response.
* | | Merge pull request #32381 from q-centrix/update-codeclimate-configsRichard Schneeman2018-07-251-3/+1
|\ \ \ | | | | | | | | Turn on performance based cops
| * | | Turn on performance based copsDillon Welch2018-07-231-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use attr_reader/attr_writer instead of methods method is 12% slower Use flat_map over map.flatten(1) flatten is 66% slower Use hash[]= instead of hash.merge! with single arguments merge! is 166% slower See https://github.com/rails/rails/pull/32337 for more conversation
* | | | Rails guides are now served over httpsPaul McMahon2018-07-241-1/+1
|/ / / | | | | | | | | | | | | http links will be redirected to the https version, but still better to just directly link to the https version.
* | | Add render options in action_controller/renderer for api documentation [ci skip]Alireza Bashiri2018-07-221-0/+15
| | | | | | | | | | | | | | | | | | Complete renderer documentation Fixes #28484
* | | Clarify example of the test `ActionController::HttpAuthentication::Token` ↵bogdanvlviv2018-07-211-4/+3
| | | | | | | | | | | | | | | | | | [ci skip] Follow up #33401, 5491f8115711d8b34d52f8ba5e52ba39a49b08fe.
* | | [ci skip] Fix syntax error + make example easier to follow.Kasper Timm Hansen2018-07-201-2/+3
| | | | | | | | | | | | Follow up to 9f152a606
* | | Fix basic auth problem in ActionController::HttpAuthentication::Basic doc黄松2018-07-201-2/+2
| | |
* | | e4e1b62 broke `to_param` handling:Edouard CHIN2018-07-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - There was an issue inside controller tests where order params were not respected, the reason was because we were calling `Hash#to_query` which sorts the results lexicographically. 1e4e1b62 fixed that issue by not using `to_query` but instead a utility function provided by rack. - However with the fix came another issue where it's now no longer possible to do this ``` post :foo, params: { user: User.first } # Prior to the patch the controller will receive { "user" => "1" } # Whereas now you get { "user": "#<User: ...>" } ``` The fix in this PR is to modify `Hash#to_query` to sort only when it doesn't contain an array structure that looks something like "bar[]" Ref https://github.com/rails/rails/pull/33341#issuecomment-404039396
* | | Convert hashes into parameters (#33076)Kevin Sjöberg2018-06-191-10/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Convert hashes into parameters Ensure `ActionController::Parameters#transform_values` and `ActionController::Parameters#transform_values!` converts hashes into parameters. * fixup! Convert hashes into parameters [Rafael Mendonça França + Kevin Sjöberg]