aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Remove `frozen_string_literal` magic comment from template fileyuuji.yaginuma2019-05-291-2/+0
| | | | | | | The other template files do not add `frozen_string_literal`, so should behave the same. Ref: #30342, #30348.
* Address intermittent CI failure in cascaded_eager_loading_test.rbRyuta Kamizono2019-05-291-12/+12
| | | | https://buildkite.com/rails/rails/builds/61362#99165d42-172d-4ad5-bf72-b29d8cd44f3e/995-1006
* Merge pull request #36353 from p8/fix-spelling-in-face-modelRyuta Kamizono2019-05-291-1/+1
|\ | | | | | | | | Fix comment for "broken" inverse_of associations [ci skip]
| * Fix comment for "broken" inverse_of associations [ci skip]Petrik2019-05-281-1/+1
| |
* | Address intermittent CI failure due to unfilled schema columns cacheRyuta Kamizono2019-05-291-3/+3
| | | | | | | | https://buildkite.com/rails/rails/builds/61358#a78ee50e-30b5-48a2-858f-63eba287d919/1290-1298
* | Merge pull request #36324 from yoones/fix-unexpected-select-tag-delete-behaviorEileen M. Uchitelle2019-05-283-1/+12
|\ \ | | | | | | Fix unexpected select_tag delete behavior when include_blank is present
| * | Fix select_tag so that is doesn't change options when include_blank is setYounes SERRAJ2019-05-223-1/+12
| | |
* | | Merge pull request #36352 from kamipo/fast_pluck_datetimeRyuta Kamizono2019-05-281-3/+10
|\ \ \ | | | | | | | | Don't round off subseconds unless necessary
| * | | Don't round off subseconds unless necessaryRyuta Kamizono2019-05-281-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if `:datetime` type has a precision, type casting always does round off subseconds regardless of whether necessary or not, it is a bit slow. Since #34970, `t.timestamps` with `precision: 6` by default, so `pluck(:created_at)` in newly created app will always be affected by the round off. This avoids the round off if possible, it makes `pluck(:created_at)` about 25% faster. https://gist.github.com/kamipo/e029539f2632aee9f5e711fe66fc8842 Before (0a87d7c9ddb95cf7568baf889ff4091469ba9af4 with postgresql adapter): ``` Warming up -------------------------------------- users.pluck(:id) 344.000 i/100ms users.pluck(:name) 336.000 i/100ms users.pluck(:created_at) 206.000 i/100ms Calculating ------------------------------------- users.pluck(:id) 3.620k (± 8.5%) i/s - 18.232k in 5.077316s users.pluck(:name) 3.579k (± 9.4%) i/s - 17.808k in 5.020230s users.pluck(:created_at) 2.069k (± 8.0%) i/s - 10.300k in 5.019284s ``` Before (0a87d7c9ddb95cf7568baf889ff4091469ba9af4 with mysql2 adapter): ``` Warming up -------------------------------------- users.pluck(:id) 245.000 i/100ms users.pluck(:name) 240.000 i/100ms users.pluck(:created_at) 180.000 i/100ms Calculating ------------------------------------- users.pluck(:id) 2.548k (± 9.4%) i/s - 12.740k in 5.066574s users.pluck(:name) 2.513k (± 8.0%) i/s - 12.480k in 5.011260s users.pluck(:created_at) 1.771k (±11.2%) i/s - 8.820k in 5.084473s ``` After (this change with postgresql adapter): ``` Warming up -------------------------------------- users.pluck(:id) 348.000 i/100ms users.pluck(:name) 357.000 i/100ms users.pluck(:created_at) 254.000 i/100ms Calculating ------------------------------------- users.pluck(:id) 3.628k (± 8.2%) i/s - 18.096k in 5.024748s users.pluck(:name) 3.624k (±12.4%) i/s - 17.850k in 5.020959s users.pluck(:created_at) 2.567k (± 7.0%) i/s - 12.954k in 5.081153s ``` After (this change with mysql2 adapter): ``` Warming up -------------------------------------- users.pluck(:id) 268.000 i/100ms users.pluck(:name) 265.000 i/100ms users.pluck(:created_at) 207.000 i/100ms Calculating ------------------------------------- users.pluck(:id) 2.586k (±10.9%) i/s - 12.864k in 5.050546s users.pluck(:name) 2.543k (±10.2%) i/s - 12.720k in 5.067726s users.pluck(:created_at) 2.263k (±14.5%) i/s - 10.971k in 5.004039s ```
* | | | `:datetime` and `:time` columns allows `:precision` option [ci skip]Ryuta Kamizono2019-05-281-2/+3
|/ / /
* | | Merge pull request #36350 from kamipo/fast_pluckRyuta Kamizono2019-05-281-3/+5
|\ \ \ | | | | | | | | Allow symbol (i.e. quoted identifier) as safe SQL string
| * | | Allow symbol (i.e. quoted identifier) as safe SQL stringRyuta Kamizono2019-05-281-3/+5
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `pluck(:id)` / `order(:id)` are very common use case, and passed symbol (i.e. quoted identifier) is obviously safe argument, but `:id.to_s.split(/\s*,\s*/).all? { |part| permit.match?(part) }` is useless and a bit expensive operation for each such safe symbols (will make extra 2 mutable strings, 1 array, 1 proc). This avoids the expensive operation to such safe symbols, it makes `pluck(:id)` / `order(:id)` itself about 9% faster. https://gist.github.com/kamipo/11d428b57f3629a72ae89c6f21721326 Before (93e640735e9363672b770b8d1c5a35f9e464f806): ``` Warming up -------------------------------------- users.pluck(:id) 1.217k i/100ms users.order(:id).to_sql 1.848k i/100ms Calculating ------------------------------------- users.pluck(:id) 12.239k (± 8.2%) i/s - 60.850k in 5.013839s users.order(:id).to_sql 19.111k (± 7.5%) i/s - 96.096k in 5.064450s ``` After (this change): ``` Warming up -------------------------------------- users.pluck(:id) 1.293k i/100ms users.order(:id).to_sql 2.036k i/100ms Calculating ------------------------------------- users.pluck(:id) 13.257k (± 6.9%) i/s - 65.943k in 5.002568s users.order(:id).to_sql 20.957k (± 7.6%) i/s - 105.872k in 5.086102s ```
* | | Merge pull request #36348 from corprew/docs-stringify-keys-stable-resultRyuta Kamizono2019-05-281-8/+4
|\ \ \ | | | | | | | | | | | | [documentation][ci skip] stringify_keys and symbolize_keys have stable results.
| * | | stringify_keys and symbolize_keys have stable results.Corprew Reed2019-05-271-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rails 6 uses the `Hash.transform_keys` found in Ruby 2.5 and later, and that method enumerates keys based on insertion order. Calling `symbolize_keys`, `stringify_keys`, and their bang variants will result in the same hash every time -- the value for any key where a collision occurs is the last assigned in that enumeration In the docs for Hash -- https://ruby-doc.org/core-2.5.0/Hash.html > Hashes enumerate their values in the order that the corresponding keys were inserted.
* | | | Merge pull request #36347 from causztic/masterRyuta Kamizono2019-05-281-2/+0
|\ \ \ \ | | | | | | | | | | Remove unused requires from debug_exceptions
| * | | | remove unused requires from debug_exceptionsyaojie2019-05-281-2/+0
|/ / / /
* | | | Merge pull request #36346 from corprew/day_of_week_doc_fixPrem Sichanugrist2019-05-281-1/+1
|\ \ \ \ | |/ / / |/| | | [documentation][ci skip] changes 'Week day' to 'day of week'
| * | | changes 'Week day' to 'day of week'Corprew Reed2019-05-271-1/+1
|/ / / | | | | | | | | | | | | 'Week day' has a specific meaning in English -- see https://en.wiktionary.org/wiki/weekday for details -- that is not meant here. 'Day of week' is more appropriate. [ci skip]
* | | ruby < 2.5 is no longer supportedAkira Matsuda2019-05-282-17/+9
| | |
* | | Merge pull request #36345 from jhawthorn/weakref_reaperRafael França2019-05-271-11/+21
|\ \ \ | |/ / |/| | Use WeakRef in Reaper to avoid leaking connection pools
| * | Use WeakRef to avoid leaking connection poolsJohn Hawthorn2019-05-271-11/+21
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to 3e2e8eeb9ea552bd4782538cf9348455f3d0e14a the Reaper thread would hold a reference to connection pools indefinitely, preventing the connection pool from being garbage collected, and also leaking the Thread. Since 3e2e8eeb9ea552bd4782538cf9348455f3d0e14a, there is only one Reaper Thread for all pools, however all pools are still stored in a class variable, preventing them from being garbage collected. This commit instead holds reference to the pools through a WeakRef. This way, connection pools referenced elsewhere will be reaped, any others will be able to be garbage collected. I don't love resorting to WeakRef to solve this, but I believe it's the simplest way to accomplish the the desired behaviour.
* | Extract `readonly_attribute?`Ryuta Kamizono2019-05-273-6/+6
| |
* | Skip needless spaces from generated app layout.Kasper Timm Hansen2019-05-261-1/+1
| |
* | Merge pull request #36343 from edudepetris/update_commentsRyuta Kamizono2019-05-261-2/+2
|\ \ | | | | | | | | | | | | Change comments [ci skip]
| * | Change commentsEdu Depetris2019-05-251-2/+2
|/ /
* | Merge pull request #36340 from jhawthorn/evented_file_checker_symlinkKasper Timm Hansen2019-05-242-20/+43
|\ \ | | | | | | Fix EventedFileUpdateChecker through a symlink
| * | Fix EventedFileUpdateChecker through a symlinkJohn Hawthorn2019-05-232-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On MacOS, Dir.tmpdir gives me a folder inside "/var/folders/". However, /var is a symlink to /private/var. Previously, the nonexistent directory test would fail because it was initialized with /var/folders/... but the filenames from listen would be the realpaths. This commit normalizes the dirs by calling realpath on them if they exist. This is done on boot!, so it will work with newly directories through the symlink.
| * | Use existing tmpdir in evented_file_update_testJohn Hawthorn2019-05-231-20/+18
| | | | | | | | | | | | | | | The common include of this test creates a tmpdir, we should use that for consistency.
* | | Address 639d7be. Readd changelog line; remove needless explicit return.Kasper Timm Hansen2019-05-242-1/+2
| | |
* | | Merge pull request #36323 from jhawthorn/cache_expiry_mutexRafael França2019-05-231-8/+11
|\ \ \ | | | | | | | | Wrap ActionView cache expiry in a mutex
| * | | Wrap actionview cache expiry in a mutexJohn Hawthorn2019-05-211-8/+11
| | | |
* | | | Merge pull request #36337 from jhawthorn/remove_existing_parentRafael França2019-05-232-15/+0
|\ \ \ \ | |_|/ / |/| | | Delete evented_file_update_checker existing_parent
| * | | Delete evented_file_update_checker existing_parentJohn Hawthorn2019-05-232-15/+0
|/ / / | | | | | | | | | This is no longer used as of caa3cc8868206f8109e0d633efb09d31e94ef635
* | | Merge pull request #36336 from aried3r/patch-7Rafael França2019-05-231-1/+1
|\ \ \ | | | | | | | | Bump Gemfile entry jbuilder version
| * | | Bump Gemfile entry jbuilder versionAnton Rieder2019-05-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | jbuilder 2.6.4 is the first version that relaxes the version constraint to allow Rails 6. I also did some more tests in #25183, although not with 2.6.4 explicitly. To simplify the version requirement, I went for 2.7. https://github.com/rails/jbuilder/blob/v2.6.4/jbuilder.gemspec https://github.com/rails/rails/issues/25183#issuecomment-494342406
* | | | Merge pull request #33437 from CodingAnarchy/delegate_missing_allow_nilGeorge Claghorn2019-05-235-5/+44
|\ \ \ \ | |/ / / |/| | | Add :allow_nil option to delegate_missing_to
| * | | Add :allow_nil option to delegate_missing_to; use in ActiveStorageMatt Tanous2019-05-235-5/+44
|/ / / | | | | | | | | | attachment
* | | Merge pull request #34656 from ↵Gannon McGibbon2019-05-226-47/+100
|\ \ \ | | | | | | | | | | | | | | | | albertoalmagro/path_helper_without_params_does_not_loose_scope Keep part when scope option has value
| * | | Remove Route#build as it wasn't usedAlberto Almagro2019-05-222-28/+21
| | | | | | | | | | | | | | | | | | | | | | | | After @kamipo CR feedback we realized `Route#build` wasn't used. As it is also private API being able to create Routes both with `#new` and `#build` was redundant.
| * | | Use keyword arguments for ActionDispatch::Routing::Mapper::Mapping constructorAlberto Almagro2019-05-221-14/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes from constructor's argument list to keyword arguments in order to remove the dependency of remember parameters' positions. It also unifies all parameters extracted from the `scope` into `scope_params`, which also takes care of providing the default values for them.
| * | | Use keyword arguments for ActionDispatch::Journey:Route constructorAlberto Almagro2019-05-222-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit changes from constructor's argument list to keyword arguments in order to remove the dependency of remember parameters' positions. The constructor already provided a default value for `internal`, this commits takes the chance to also add default values for `precedence` and `scope_options`.
| * | | Keep part when scope option has valueAlberto Almagro2019-05-225-11/+65
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | When a route was defined within an optional scope, if that route didn't take parameters the scope was lost when using path helpers. This patch ensures scope is kept both when the route takes parameters or when it doesn't. Fixes #33219
* | | Mirror direct uploadsGeorge Claghorn2019-05-2213-74/+159
| | |
* | | Merge pull request #36329 from XrXr/no-doc-template-assertionsRafael França2019-05-221-1/+1
|\ \ \ | | | | | | | | Remove compatibility module from docs [ci skip]
| * | | Remove compatibility module from docs [ci skip]Alan Wu2019-05-221-1/+1
| | | | | | | | | | | | | | | | | | | | This module exists to warn old users. I think we should remove it from the docs so we don't advertise it.
* | | | Merge pull request #36294 from ↵Rafael França2019-05-224-0/+39
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | gustavogr/add-deep-transform-keys-to-strong-params Added deep_transform_keys to StrongParameters
| * | | | Implemented deep_transform_keys/! for ActionController::ParametersGustavo Gutierrez2019-05-224-0/+39
|/ / / /
* | | | Add `action_cable_connection_test_case` hook to the "available hooks" list ↵प्रथमेश Sonpatki2019-05-221-28/+29
| | | | | | | | | | | | | | | | | | | | [ci skip] (#36326) - This hook was added in 90296674b1c
* | | | Merge pull request #36320 from XrXr/no-doc-prependRafael França2019-05-211-1/+1
|\ \ \ \ | |_|/ / |/| | | [CI skip] Put :nodoc: on method that raises NoMethodError
| * | | Put :nodoc: on method that raises NoMethodErrorAlan Wu2019-05-211-1/+1
| | | | | | | | | | | | | | | | | | | | This method is not intended to be used so I think we should remove it from the docs.