aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #35412 from abhchand/correctly-load-blob-associationGeorge Claghorn2019-02-263-0/+7
|\ | | | | Ensure that the `_blob` association is properly loaded when attaching `::One`
| * [ActiveStorage] Ensure that the `_blob` association is properly loaded when ↵Abhishek Chandrasekhar2019-02-263-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | attaching `::One` Consider a model with `One` and `Many` attachments configured: class User < ActiveRecord::Base has_one_attached :avatar has_many_attached :highlights end === One Attachment After attaching `One` attachment (`:avatar`), we can see that the associated `_blob` record (`:avatar_blob`) still returns as `nil`. user.avatar.attach(blob) user.avatar_attachment.present? => true user.avatar_blob.present? => false # Incorrect! This is a false negative. It happens because after the attachment and blob are built: 1. The record already has its `_blob` association loaded, as `nil` 2. the `::Attachment` is associated with the record but the `::Blob` only gets associated with the `::Attachment`, not the record itself In reality, the blob does in fact exist. We can verify this as follows: user.avatar.attach(blob) user.avatar_attachment.blob.present? => true # Blob does exist! The fix in this change is to simply assign the `::Blob` when assigning the `::Attachment`. After this fix is applied, we correctly observe: user.avatar.attach(blob) user.avatar_attachment.present? => true user.avatar_blob.present? => true # Woohoo! === Many Attachments We don't see this issue with `Many` attachments because the `_blob` association is already loaded as part of attaching more/newer blobs. user.highlights.attach(blob) user.highlights_attachments.any? => true user.highlights_blobs.any? => true
* | Fix random CI failure due to non-deterministic sorting orderRyuta Kamizono2019-02-271-5/+5
| | | | | | | | https://buildkite.com/rails/rails/builds/59106#596284a1-4692-4640-8a50-c4286e173bbb/115-126
* | Merge pull request #35361 from ↵Ryuta Kamizono2019-02-274-3/+40
|\ \ | | | | | | | | | | | | | | | jvillarejo/fix_wrong_size_query_with_distinct_select Fix different `count` calculation when using `size` with DISTINCT `select`
| * | fixes different `count` calculation when using `size` manual `select` with ↵jvillarejo2019-02-264-3/+39
|/ / | | | | | | | | | | | | | | DISTINCT When using `select` with `'DISTINCT( ... )'` if you use method `size` on a non loaded relation it overrides the column selected by passing `:all` so it returns different value than count. This fixes #35214
* | Merge pull request #35414 from abhaynikam/35406-followup-rename-template-formatRafael França2019-02-251-1/+1
|\ \ | | | | | | [ci skip] Renamed formats -> format in test after #35406
| * | [ci skip] Renamed formats -> format in test after #35406Abhay Nikam2019-02-261-1/+1
|/ /
* | Merge pull request #35408 from rails/template-has-one-variantAaron Patterson2019-02-253-13/+11
|\ \ | | | | | | Template has one variant
| * | Change `variants` to `variant`Aaron Patterson2019-02-252-11/+10
| | | | | | | | | | | | | | | | | | Templates only have one variant, so we should not store it in an array. This commit converts `variants` to `variant` and deprecates the plural accessor
| * | Remove potential `variants` mutation in `decorate`Aaron Patterson2019-02-251-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Even if the template is constructed with a `nil` variant, the array it constructs will never be `empty?`: https://github.com/rails/rails/blob/56b030605b4d968077a4ddb96b4ab619e75fb999/actionview/lib/action_view/template.rb#L152 We get an array that is `[nil]`, which is not empty, so this conditional is never true.
| * | Convert `variant` to a keyword argAaron Patterson2019-02-251-2/+2
| | |
* | | Preparing for 6.0.0.beta2 releaseRafael Mendonça França2019-02-2532-68/+109
| | |
* | | Improve Template#inspect output (#35407)John Hawthorn2019-02-252-2/+16
|/ / | | | | | | | | | | | | | | | | | | | | | | | | * Don't call inspect from identifier_method_name * Add locals Template#inspect Handler, formats, and variant are usually obvious from looking at the identifier. However it's not uncommon to have different locals for the same template so we should make that obvious in inspect. * Add tests for short_identifier and inspect [John Hawthorn + Rafael Mendonça França]
* | Merge pull request #35406 from rails/template-has-one-formatAaron Patterson2019-02-2516-31/+43
|\ \ | | | | | | Templates have one format
| * | Templates have one formatAaron Patterson2019-02-2516-31/+43
| | | | | | | | | | | | | | | | | | | | | Templates only have one format. Before this commit, templates would be constructed with a single element array that contained the format. This commit eliminates the single element array and just implements a `format` method. This saves one array allocation per template.
* | | Merge pull request #35400 from aglushkov/stream_manual_cache_controlAaron Patterson2019-02-252-2/+8
|\ \ \ | |/ / |/| | Allow custom cache-control header in AC::Live
| * | Allow custom cache-control header in AC::LiveAndrey Glushkov2019-02-252-2/+8
| | | | | | | | | | | | https://github.com/rails/rails/issues/35312
* | | Merge pull request #35404 from rails/no-nil-format-on-templatesAaron Patterson2019-02-256-16/+33
|\ \ \ | | | | | | | | No nil format on templates
| * | | Update actionview/lib/action_view/template.rbRyuta Kamizono2019-02-251-1/+1
| | | | | | | | | | | | Co-Authored-By: tenderlove <tenderlove@github.com>
| * | | remove the formats writer on templatesAaron Patterson2019-02-251-2/+6
| | | |
| * | | Dereference the format type before template constructionAaron Patterson2019-02-252-2/+2
| | | | | | | | | | | | | | | | | | | | The format should always be exactly one symbol. Now we don't need to check whether or not the format is a `Type` in the constructor.
| * | | Always pass a format to the ActionView::Template constructorAaron Patterson2019-02-256-13/+26
|/ / / | | | | | | | | | | | | This means we can eliminate nil checks and remove some mutations from the `decorate` method.
* | | Fix class name in the documentation [ci skip]Rafael Mendonça França2019-02-251-1/+1
| | |
* | | Merge pull request #35402 from alimi/update-ar-read-regexAaron Patterson2019-02-254-1/+29
|\ \ \ | | | | | | | | Support read queries with leading characters while preventing writes
| * | | Update READ_QUERY regexAli Ibrahim2019-02-254-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * The READ_QUERY regex would consider reads to be writes if they started with spaces or parens. For example, a UNION query might have parens around each SELECT - (SELECT ...) UNION (SELECT ...). * It will now correctly treat these queries as reads.
* | | | Depend on bootsnap 1.4.1Rafael Mendonça França2019-02-251-1/+1
| |_|/ |/| | | | | | | | This is needed to fix #35278.
* | | Refactor `type_to_sql` to handle converting `limit` to `size` in itselfRyuta Kamizono2019-02-266-76/+91
| | | | | | | | | | | | | | | Also, improving an argument error message for `limit`, extracting around `type_to_sql` code into schema statements, and more exercise tests.
* | | Merge pull request #35399 from kamipo/fix_prepared_statement_cachingRyuta Kamizono2019-02-265-15/+79
|\ \ \ | |/ / |/| | Fix prepared statements caching to be enabled even when query caching is enabled
| * | Fix prepared statements caching to be enabled even when query caching is enabledRyuta Kamizono2019-02-265-15/+79
|/ / | | | | | | | | | | | | | | | | | | | | | | Related cbcdecd, 2a56b2d. This is a regression caused by cbcdecd. If query caching is enabled, prepared statement handles are never re-used, since we missed that a query is preprocessed when query caching is enabled, but doesn't keep the `preparable` flag. We should care about that case.
* | Merge pull request #35394 from alkesh26/activemodel-typo-fixRyuta Kamizono2019-02-251-3/+3
|\ \ | | | | | | activemodel typo fixes.
| * | activemodel typo fix.alkesh262019-02-251-3/+3
| | |
* | | Merge pull request #35352 from kamipo/update_all_doesnt_care_optimistic_lockingRyuta Kamizono2019-02-254-19/+83
|\ \ \ | |/ / |/| | Ensure `update_all` series doesn't care optimistic locking
| * | Ensure `update_all` series cares about optimistic lockingRyuta Kamizono2019-02-254-19/+83
| | | | | | | | | | | | | | | | | | Incrementing the lock version invalidates any other process's optimistic lock, which is the desired outcome: the record no longer looks the same as it did when they loaded it.
* | | Merge pull request #35393 from alkesh26/activejob-typo-fixRyuta Kamizono2019-02-251-1/+1
|\ \ \ | | | | | | | | [ci skip] activejob typo fix.
| * | | [ci skip] activejob typo fix.alkesh262019-02-251-1/+1
|/ / /
* | | Remove duplicated protected params definitionsRyuta Kamizono2019-02-246-88/+30
| | | | | | | | | | | | Use "support/stubs/strong_parameters" instead.
* | | Add test case for `unscope` with `merge`Ryuta Kamizono2019-02-241-0/+13
| | |
* | | More exercise string attribute predicate tests for falsy stringsRyuta Kamizono2019-02-241-0/+4
| | |
* | | Merge pull request #35383 from soartec-lab/update_guide_activerecord_queryingRyuta Kamizono2019-02-241-0/+2
|\ \ \ | | | | | | | | How to use `select` is updated [ci skip]
| * | | How to use `select` is updated [ci skip]soartec-lab2019-02-241-0/+2
| | | |
* | | | Disable available locale checks in Action Test testyuuji.yaginuma2019-02-241-0/+3
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | Without this change, `store_translations` silently fails when available locales already initialized. Ref: https://travis-ci.org/rails/rails/jobs/497615616#L6846 https://travis-ci.org/rails/rails/jobs/497605027#L6856
* | | Merge pull request #35382 from ↵George Claghorn2019-02-232-48/+62
|\ \ \ | | | | | | | | | | | | | | | | janko/restore-io-copy-stream-compatibility-with-uploaded-file Restore ActionDispatch::Http::UploadedFile compatibility with IO.copy_stream
| * | | Restore UploadedFile compatibility with IO.copy_streamJanko Marohnić2019-02-232-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In https://github.com/rails/rails/pull/28676 the `#to_path` method was added to `ActionDispatch::Http::UploadedFile`. This broke usage with `IO.copy_stream`: source = ActionDispatch::Http::UploadedFile.new(...) IO.copy_stream(source, destination) # ~> TypeError: can't convert ActionDispatch::Http::UploadedFile to IO (ActionDispatch::Http::UploadedFile#to_io gives Tempfile) Normally `IO.copy_stream` just calls `#read` on the source object. However, when `#to_path` is defined, `IO.copy_stream` calls `#to_io` in order to retrieve the raw `File` object. In that case it trips up, because `ActionDispatch::Http::UploadedFile#to_io` returned a `Tempfile` object, which is not an `IO` subclass. We fix this by having `#to_io` return an actual `File` object.
| * | | Test ActionDispatch::Http::UploadedFile with an actual TempfileJanko Marohnić2019-02-231-48/+48
| | | |
* | | | Make this test strongerXavier Noria2019-02-231-0/+7
| | | | | | | | | | | | | | | | | | | | We test the inflections for both autoloaders, but we can also autoload the constant as a sort of integration test.
* | | | Add test case for `unscope` with unknown columnRyuta Kamizono2019-02-241-0/+11
| | | |
* | | | More exercise tests for distinct count with group byRyuta Kamizono2019-02-241-2/+16
| | | |
* | | | Let Zeitwerk autoloaders inflect with Active SupportXavier Noria2019-02-232-2/+32
|/ / / | | | | | | | | | [Harry Brundage & Xavier Noria]
* | | Merge pull request #35379 from shivamvinsol/minor_grammar_fixRyuta Kamizono2019-02-241-1/+1
|\ \ \ | | | | | | | | minor grammar fix [ci skip]
| * | | minor grammar fix [ci skip]Shivam Jain2019-02-241-1/+1
|/ / /