aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Add always_permitted_parameters as an option.Rafael Chacón2014-06-262-5/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | * This commit adds back the always_permitted_parameters configuration option to strong paramaters. * The initial pull requests where this feature was added are the following: - https://github.com/rails/rails/pull/12682 - https://github.com/rails/strong_parameters/pull/174
* | | Merge pull request #15836 from DNNX/router-swap-select-sortRafael Mendonça França2014-06-241-1/+2
|\ \ \ | | | | | | | | Replace x.sort_by!.select! with x.select!.sort_by!
| * | | Replace x.sort_by!.select! with x.select!.sort_by!Viktar Basharymau2014-06-201-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The latter has the same speed as the former in the worst case and faster in general, because it is always better to sort less items. Unfortunately, `routes.select!{...}.sort_by!{...}` is not possible here because `select!` returns `nil`, so select! and sort! must be done in two steps.
* | | | `:nodoc: all` does not remove the constants from the API. [ci skip]Yves Senn2014-06-241-1/+1
|/ / / | | | | | | | | | | | | Need to add individual `:nodoc:` for nested classes / modules to completely remove the constants from the API.
* | | Merge pull request #15537 from tgxworld/fix_state_leakMatthew Draper2014-06-201-1/+0
|\ \ \ | | | | | | | | Fix state leak.
| * | | Prevent state leak.Guo Xiang Tan2014-06-051-1/+0
| | | |
* | | | add both branches to the only_path conditionalAaron Patterson2014-06-191-6/+6
| | | |
* | | | Relpace `=~ Regexp.new str` with `.include? str` in AC::Base#_valid_action_name?Viktar Basharymau2014-06-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because it is more natural way to test substring inclusion. Also, in this particular case it is much faster. In general, using `Regexp.new str` for such kind of things is dangerous. The string must be escaped, unless you know what you're doing. Example: Regexp.new "\\" # HELLO WINDOWS # RegexpError: too short escape sequence: /\/ The right way to do this is escape the string Regexp.new Regexp.escape "\\" # => /\\/ Here is the benchmark showing how faster `include?` call is. ``` require 'benchmark/ips' Benchmark.ips do |x| x.report('include?') { !"index".to_s.include? File::SEPARATOR } x.report(' !~ ') { "index" !~ Regexp.new(File::SEPARATOR) } end __END__ Calculating ------------------------------------- include? 75754 i/100ms !~ 21089 i/100ms ------------------------------------------------- include? 3172882.3 (±4.5%) i/s - 15832586 in 5.000659s !~ 322918.8 (±8.6%) i/s - 1602764 in 4.999509s ``` Extra `.to_s` call is needed to handle the case when `action_name` is `nil`. If it is omitted, some tests fail.
* | | | [ci skip] /javascript/ ~> JavaScriptAditya Kapoor2014-06-171-3/+3
| | | |
* | | | Merge pull request #15744 from mmozuras/special_keys_setYves Senn2014-06-161-1/+1
|\ \ \ \ | | | | | | | | | | Change Http::Cache::SPECIAL_KEYS from Array to Set
| * | | | Change Http::Cache::SPECIAL_KEYS from Array to SetMindaugas Mozūras2014-06-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Slightly improves performance, for example, a simple benchmark: ```ruby require 'benchmark/ips' require 'set' SPECIAL_KEYS = %w[extras no-cache max-age public must-revalidate] SPECIAL_KEYS_SET = Set.new(SPECIAL_KEYS) directive = 'must-revalidate' Benchmark.ips do |x| x.report('array') { SPECIAL_KEYS.include?(directive) } x.report('set') { SPECIAL_KEYS_SET.include?(directive) } end ``` Output: ``` ------------------------------------- array 67926 i/100ms set 74054 i/100ms ------------------------------------- array 2318423.4 (±2.8%) i/s - 11615346 in 5.014899s set 3387981.8 (±4.7%) i/s - 16958366 in 5.019355s ```
* | | | | Merge pull request #15743 from tgxworld/remove_unused_parametersYves Senn2014-06-161-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Remove unused parameter.
| * | | | | Remove unused parameter.Guo Xiang Tan2014-06-151-1/+1
| |/ / / /
* / / / / Remove unused param 'separators' from RouteSet#build_pathMindaugas Mozūras2014-06-151-2/+2
|/ / / /
* | | | Fix request's path_info when a rack app mounted at '/'.Larry Lv2014-06-141-0/+1
| | | | | | | | | | | | | | | | Fixes issue #15511.
* | | | Merge pull request #15692 from sromano/falseClassMatthew Draper2014-06-141-1/+6
|\ \ \ \ | | | | | | | | | | | | | | | ActionController::Parameters#require now accepts FalseClass values
| * | | | ActionController::Parameters#require now accepts FalseClass valuesSergio Romano2014-06-131-0/+1
|/ / / / | | | | | | | | | | | | Fixes #15685.
* | | | Merge pull request #15682 from tgxworld/controller_test_processRafael Mendonça França2014-06-131-2/+5
|\ \ \ \ | | | | | | | | | | Set flash in test session when necessary.
| * | | | Set flash in test session when necessary.Guo Xiang Tan2014-06-121-2/+5
| | | | | | | | | | | | | | | | | | | | `to_session_value` returns nil when empty.
* | | | | Fix parsed token value with header `Authorization token=`.Larry Lv2014-06-131-2/+2
| | | | |
* | | | | Set the status before of setting the response bodyGuillermo Iguaran2014-06-131-2/+2
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | The 401 status should be set first because setting the response body in a live controller also closes the response to further changes. Fixes #14229.
* | | | only check named_host? once in normalize_hostAaron Patterson2014-06-121-3/+7
| | | |
* | | | lookup subdomain from the options hash once, defaulting to trueAaron Patterson2014-06-121-2/+2
| | | | | | | | | | | | | | | | | | | | if the subdomain wasn't specified, it's the same as if specifying :subdomain as `true`, so we can default the value to `true` safely.
* | | | only extract domain from the options hash onceAaron Patterson2014-06-121-3/+4
| | | |
* | | | reduce calls to `named_host?`Aaron Patterson2014-06-121-2/+6
| | | | | | | | | | | | | | | | | | | | `normalize_host` already calls `named_host?`, so there is no reason to test `named_host?` again in the `extract_domain` method.
* | | | Removed warning actionpack url.rbJuanito Fatas2014-06-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before: /Users/Juan/dev/rails/actionpack/lib/action_dispatch/http/url.rb:95: warning: shadowing outer local variable - port After: No warning
* | | | remove useless to_param callAaron Patterson2014-06-111-1/+1
| | | | | | | | | | | | | | | | | | | | extract_subdomain always returns a string, and to_param calls to_s on a string
* | | | only look up the subdomain onceAaron Patterson2014-06-111-3/+4
| | | |
* | | | scheme should contain one or more charactersAaron Patterson2014-06-111-1/+1
| | | |
* | | | pull the port out of the options hash onceAaron Patterson2014-06-111-2/+3
| | | |
* | | | remove useless nil checkAaron Patterson2014-06-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | irb(main):004:0> /foo/ !~ nil => true irb(main):005:0> /foo/ !~ 'bar' => true irb(main):006:0> /foo/ !~ 'foo' => false
* | | | these methods are always called with a tld_parameterAaron Patterson2014-06-111-3/+3
| | | | | | | | | | | | | | | | | | | | remove the default parameter since the methods are always called with a parameter
* | | | rm `same_host?`. The same conditional is two lines down.Aaron Patterson2014-06-111-5/+3
| | | |
* | | | Revert "rm `same_host?`. The same conditional is two lines down."Aaron Patterson2014-06-111-5/+8
| | | | | | | | | | | | | | | | This reverts commit 79469b4b0c05a50e19699bc9b568042add2d4987.
* | | | rm `same_host?`. The same conditional is two lines down.Aaron Patterson2014-06-111-8/+5
| | | |
* | | | cache host on the stack so we only look it up onceAaron Patterson2014-06-111-8/+9
| | | |
* | | | only pull :protocol from the options hash onceAaron Patterson2014-06-111-2/+3
| | | |
* | | | cache protocol on the stack to reduce options hash lookupsAaron Patterson2014-06-111-7/+7
| | | |
* | | | eliminate nil checks in normalize_portAaron Patterson2014-06-111-7/+7
| | | |
* | | | reduce hash lookups and disconnect normalize_port from the options hashAaron Patterson2014-06-111-9/+9
| | | |
* | | | Handle client disconnect during live streamingMatthew Draper2014-06-082-13/+95
| | | | | | | | | | | | | | | | .. even when the producer is blocked for a write.
* | | | adds some details to the rationale of converted_arrays [ci skip]Xavier Noria2014-06-071-0/+4
| | | |
* | | | Revert "Convert StrongParameters cache to a hash. This fixes an unbounded"Xavier Noria2014-06-071-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot cache keys because arrays are mutable. We rather want to cache the arrays. This behaviour is tailor-made for the usage pattern strongs params is designed for. In a forthcoming commit I am going to add a test that covers why we need to cache by value. Every strong params instance has a live span of a request, the cache goes away with the object. Since strong params have such a concrete intention, it would be interesting to see if there are actually any real-world use cases that are an actual leak, one that practically may matter. I am not convinced that the theoretical leak has any practical consequences, but if it can be shown there are, then I believe we should either get rid of the cache (which is an optimization), or else wipe it in the mutating API. This reverts commit e63be2769c039e4e9ada523a8497ce3206cc8a9b.
* | | | [ci skip] Fix capitalizationAkshay Vishnoi2014-06-072-3/+3
| | | |
* | | | remove another wasteful AS::SafeBuffer allocationAaron Patterson2014-06-061-1/+1
| | | |
* | | | eliminate wasteful AS::SafeBuffer allocationAaron Patterson2014-06-061-1/+1
| | | |
* | | | Use a frozen Set instance for CGI_VARIABLES.Nathaniel Bibler2014-06-051-8/+21
|/ / / | | | | | | Also expand the CGI_VARIABLE name listing to multiple lines for cleaner diffs and legibility.
* | | Avoid misuse of underscore argumentCorey Ward2014-06-051-2/+2
| | | | | | | | | Per convention, underscore-only argument names should be used for unused parameters.
* | | Merge branch 'master' of github.com:rails/railsAaron Patterson2014-06-044-36/+14
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of github.com:rails/rails: For our build, stick with mail 2.5.x for now Correct result, previously showing wrong result Collapse PG default extractoin of most types to single regex Change wording of explanation about precision & scale of decimal numbers [ci skip] Cleaned up duplicated CHANGELOG entry [ci skip] reuse available belongs_to? method Convert StrongParameters cache to a hash. This fixes an unbounded memory leak demonstrated on @tenderlove's latest blog post: Partially revert deprecation of *_filter Pluralize params Add default_i18n_subject to the guides Fix regression on eager loading association based on SQL query rather than existing column. Relax mail gem constraint from ~> 2.5.4 to ~> 2.5, >= 2.5.4 Keep column defaults in type cast form Return a null column when no column exists for an attribute Refactor XML serializer to not depend on `serialized_attributes` Test the serialized types of virtual columns in XML implement ActiveRecord::Base#pretty_print + changelog Remove duplicated HashWithIndifferentAccess#with_indifferent_access.
| * \ \ Merge pull request #15498 from zenspider/fix_memory_leakGuillermo Iguaran2014-06-031-6/+6
| |\ \ \ | | | | | | | | | | Convert StrongParameters cache to a hash. This fixes an unbounded memory leak