aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
Commit message (Collapse)AuthorAgeFilesLines
* `log_process_action` will return an array, so use `empty?`Aaron Patterson2016-02-091-1/+1
| | | | | We don't need to use active support in this case because we know the type that will be returned.
* Request#fullpath should not raise an exception, so remove the rescueAaron Patterson2016-02-091-1/+1
|
* AC::Request#format always returns a value, so we do not need to tryAaron Patterson2016-02-091-1/+1
|
* speed up string xor operation and reduce object allocationsAaron Patterson2016-02-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` [aaron@TC rails (master)]$ cat xor.rb a = "\x14b\"\xB4P8\x05\x8D\xC74\xC3\xEC}\xFDf\x8E!h\xCF^\xBF\xA5%\xC6\xF0\xA9\xF9x\x04\xFA\xF1\x82" b = "O.\xF7\x01\xA9D\xA3\xE1D\x7FU\x85\xFC\x8Ak\e\x04\x8A\x97\x91\xD01\x02\xA4G\x1EIf:Y\x0F@" def xor_byte_strings(s1, s2) s1.bytes.zip(s2.bytes).map { |(c1,c2)| c1 ^ c2 }.pack('c*') end def xor_byte_strings2(s1, s2) s2_bytes = s2.bytes s1.bytes.map.with_index { |c1, i| c1 ^ s2_bytes[i] }.pack('c*') end require 'benchmark/ips' require 'allocation_tracer' Benchmark.ips do |x| x.report 'xor_byte_strings' do xor_byte_strings a, b end x.report 'xor_byte_strings2' do xor_byte_strings2 a, b end end ObjectSpace::AllocationTracer.setup(%i{type}) result = ObjectSpace::AllocationTracer.trace do xor_byte_strings a, b end p :xor_byte_strings => result ObjectSpace::AllocationTracer.clear result = ObjectSpace::AllocationTracer.trace do xor_byte_strings2 a, b end p :xor_byte_strings2 => result [aaron@TC rails (master)]$ ruby -I~/git/allocation_tracer/lib xor.rb Calculating ------------------------------------- xor_byte_strings 10.087k i/100ms xor_byte_strings2 11.339k i/100ms ------------------------------------------------- xor_byte_strings 108.386k (± 5.8%) i/s - 544.698k xor_byte_strings2 122.239k (± 3.0%) i/s - 612.306k {:xor_byte_strings=>{[:T_ARRAY]=>[38, 0, 0, 0, 0, 0], [:T_STRING]=>[2, 0, 0, 0, 0, 0]}} {:xor_byte_strings2=>{[:T_ARRAY]=>[3, 0, 0, 0, 0, 0], [:T_DATA]=>[1, 0, 0, 0, 0, 0], [:T_IMEMO]=>[2, 0, 0, 0, 0, 0], [:T_STRING]=>[2, 0, 0, 0, 0, 0]}} ```
* Merge pull request #23534 from bronson/fix-redefined-warningArthur Nogueira Neves2016-02-081-0/+1
|\ | | | | fix 'method redefined' warnings
| * fix 'method redefined' warningsScott Bronson2016-02-061-0/+1
| |
* | Hand off the interlock to the new thread in AC::LiveMatthew Draper2016-02-071-23/+28
|/ | | | | | Most importantly, the original request thread must yield its share lock while waiting for the live thread to commit -- otherwise a request's base and live threads can deadlock against each other.
* Avoid coupling Action Pack to Railties.Kasper Timm Hansen2016-02-061-1/+1
| | | | | | | | Referencing Rails.env without checking if it's defined couples us to Railties. Fix by avoiding the line breaks if we don't have an env check to rely on.
* disable controller / view thread spawning in testsAaron Patterson2016-02-052-2/+23
| | | | | | | | | | | | | | | | | | Tests can (and do) access the database from the main thread. In this case they were starting a transaction, then making a request. The request would create a new thread, which would allocate a new database connection. Since the main thread started a transaction that contains data that the new thread wants to see, the new thread would not see it due to data visibility from transactions. Spawning the new thread in production is fine because middleware should not be doing database manipulation similar to the test harness. Before 603fe20c it was possible to set the database connection id based on a thread local, but 603fe20c changes the connection lookup code to never look at the "connection id" but only at the thread object itself. Without that indirection, we can't force threads to use the same connection pool as another thread. Fixes #23483
* Put some space for non-assets requests in development modePrathamesh Sonpatki2016-02-031-0/+2
| | | | - Fixes #23428.
* Handle response_body= when body is nileileencodes2016-01-301-0/+1
| | | | | | | | | There are some cases when the `body` in `response_body=` can be set to nil. One of those cases is in `actionpack-action_caching` which I found while upgrading it for Rails 5. It's not possible to run `body.each` on a `nil` body so we have to return after we run `response.reset_body!`.
* Fix typo in strong params hash deprecation messageMarek2016-01-271-2/+2
| | | and remove unecessary spaces in string interpolation.
* Merge branch '5-0-beta-sec'Aaron Patterson2016-01-251-1/+6
|\ | | | | | | | | | | | | | | | | | | | | * 5-0-beta-sec: bumping version fix version update task to deal with .beta1.1 Eliminate instance level writers for class accessors allow :file to be outside rails root, but anything else must be inside the rails view directory Don't short-circuit reject_if proc stop caching mime types globally use secure string comparisons for basic auth username / password
| * use secure string comparisons for basic auth username / passwordAaron Patterson2016-01-221-1/+6
| | | | | | | | | | | | this will avoid timing attacks against applications that use basic auth. CVE-2015-7576
* | Fix nodoc to internal class error document some of themVipul A M2016-01-251-1/+0
| | | | | | | | | | | | | | [ci skip] Fixes #20808 [Vipul A M & Julio Lopez]
* | Merge pull request #23167 from maclover7/fix-21032Rafael França2016-01-211-1/+5
|\ \ | | | | | | Fix `ActionController::Parameters#==` bug
| * | Fix `ActionController::Parameters#==` bugJon Moss2016-01-211-1/+5
| | | | | | | | | | | | See bug #21032.
* | | remove doc reference to ActionController::MimeResponds#respond_tosealocal2016-01-201-3/+0
| | |
* | | document simple example of ActionController::MimeResponds#respond_tosealocal2016-01-201-1/+9
| | |
* | | Re-add ActionController::ApiRenderingJon Moss2016-01-202-1/+15
|/ / | | | | | | | | - Fixes bug #23142. - Bug was occurring only with ActionController::API, because `_process_options` wasn't being run for API requests, even though it was being run for normal app requests.
* | Link to docs instead of listing methodsschneems2016-01-191-5/+7
| |
* | Add methods to StrongParametersschneems2016-01-191-1/+1
| | | | | | It's reasonable to expose different value readers.
* | [close #23084] Deprecated StrongParametersschneems2016-01-191-0/+16
| | | | | | | | We can provide a more flexible upgrade experience by warning users they are using unsafe methods instead of forcing the safe API by deprecating before removal. This PR provides this functionality.
* | remove `present?` callsAaron Patterson2016-01-121-4/+4
| | | | | | | | | | Empty strings / data structures should be treated differently than nils. We don't really need these calls here (don't pass in blank strings).
* | monkey patch `recycle!` on to controllers onceAaron Patterson2016-01-121-4/+4
| | | | | | | | | | | | | | | | | | | | | | Instead of checking whether the class has recycle! or not, we can just always add the method to all controller classes when the test harness is loaded. Technically this means that the controller test harness will not work with controllers that do not inherit from AC::Metal, but then, I'm not sure that is supported anyway. Mixing in the module one will ensure that we don't break method caches, and eliminates a runtime check so it should speed up tests (slightly).
* | AC::Parameters#at_json: restore Rails 4.2’s valueclaudiob2016-01-121-1/+2
| | | | | | | | | | | | Fixes #23026 See discussion at #23026
* | Unneeded &block parametersAkira Matsuda2016-01-121-2/+2
| |
* | [ci skip] Fix typo Renderering --> RenderingAkshay Vishnoi2016-01-091-1/+1
| |
* | Merge pull request #22275 from mastahyeti/per-form-csrfRafael França2016-01-061-11/+54
|\ \ | | | | | | Per-form CSRF tokens
| * | add option for per-form CSRF tokensBen Toews2016-01-041-11/+54
| | |
* | | Group related methods togetherBenjamin Fleischer2016-01-031-67/+67
| | |
* | | Add ActionController:Renderers testBenjamin Fleischer2016-01-031-0/+9
|/ / | | | | | | To complement actionpack/test/controller/metal/renderers_test.rb
* | Test ActionController::Renderers::use_renderersBenjamin Fleischer2015-12-311-0/+34
| |
* | Merge pull request #22850 from prathamesh-sonpatki/fix_ac_params_unsafe_h_2Kasper Timm Hansen2015-12-311-6/+6
|\ \ | | | | | | Fix AC::Parameters#to_unsafe_h to return all unfiltered values
| * | Fix AC::Parameters#to_unsafe_h to return all unfiltered valuesPrathamesh Sonpatki2015-12-311-6/+6
| | | | | | | | | | | | | | | | | | | | | - AC::Parameters#convert_parameters_to_hashes should return filtered or unfiltered values based on whether it is called from `to_h` or `to_unsafe_h` instead of always defaulting to `to_h`. - Fixes #22841
* | | Avoid `Time.parse` for static dateRafaël Blais Masson2015-12-301-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | Benchmark.ips do |x| x.report('Time.parse') { Time.parse('2011-01-01') } x.report('Time.new') { Time.new(2011, 1, 1) } end Calculating ------------------------------------- Time.parse 6.640k i/100ms Time.new 15.082k i/100ms ------------------------------------------------- Time.parse 71.915k (± 3.1%) i/s - 365.200k Time.new 167.645k (± 3.3%) i/s - 844.592k
* | Add AC::Parameters#include?Justin Coyne2015-12-291-1/+1
| | | | | | | | Fixes #22818
* | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-12-201-1/+1
|\ \ | |/ |/|
| * Add missing punctuation mark [ci skip]Gaurav Sharma2015-11-181-1/+1
| |
* | Merge pull request #20797 from byroot/prevent-url-for-ac-parametersRafael França2015-12-181-1/+0
|\ \ | | | | | | Prevent ActionController::Parameters in url_for
| * | Prevent ActionController::Parameters from being passed to url_for directlyJean Boussier2015-12-151-1/+0
| | |
* | | Document when fallback_location is used [ci-skip]Derek Prior2015-12-171-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | If you're not familiar with how the `Referer` header works, you likely won't understand why you need to provide a fallback or under what circumstances it would be used. Hopefully this clarifies things a bit.
* | | Only dup Ruby's Hash and Array.Kasper Timm Hansen2015-12-171-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | When calling `to_h` on an `ActionController::Parameters` instance it would `deep_dup` its internal parameters. This inadvertently called `dup` on a passed Active Record model which would create new models. Fix by only dupping Ruby's Arrays and Hashes.
* | | Deprecate `redirect_to :back`Derek Prior2015-12-161-10/+6
| | | | | | | | | | | | | | | | | | | | | Applications that use `redirect_to :back` can be forced to 500 by clients that do not send the HTTP `Referer` (sic) header. `redirect_back` requires the user to consider this possibility up front and avoids this trivially-caused application error.
* | | Add `redirect_back` for safer referrer redirectsDerek Prior2015-12-161-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `redirect_to :back` is a somewhat common pattern in Rails apps, but it is not completely safe. There are a number of circumstances where HTTP referrer information is not available on the request. This happens often with bot traffic and occasionally to user traffic depending on browser security settings. When there is no referrer available on the request, `redirect_to :back` will raise `ActionController::RedirectBackError`, usually resulting in an application error. `redirect_back` takes a required `fallback_location` keyword argument that specifies the redirect when the referrer information is not available. This prevents 500 errors caused by `ActionController::RedirectBackError`.
* | | Merge pull request #14212 from tylerhunt/fix-token-regexSean Griffin2015-12-151-1/+1
|\ \ \ | | | | | | | | | | | | Handle tab in token authentication header.
| * | | Handle tab in token authentication header.Tyler Hunt2014-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The HTTP spec allows for LWS to precede the header content, which could include multiple SP and HT characters. Update the regex used to match the Token authorization header to account for this, instead of matching on a single SP. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html and http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html for the relevant parts of the specification.
* | | | Remove warning of shadowing variableRafael Mendonça França2015-12-151-1/+1
| | | |
* | | | Add fragment_cache_key macro for controller-wide fragment cache key prefixesSam Stephenson2015-12-141-3/+42
| | | |
* | | | Remove ActionView::Helpers::CacheHelper#fragment_cache_keySam Stephenson2015-12-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Introduced in e56c63542780fe2fb804636a875f95cae08ab3f4, `CacheHelper#fragment_cache_key` is a duplicate of `ActionController::Caching::Fragments#fragment_cache_key`. We now require the view to provide this method on its own (as with `view_cache_dependencies`); `ActionController::Caching::Fragments` exports its version as a `helper_method`.