aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Refactor migration to move migrations paths to connectioneileencodes2018-01-1819-308/+417
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rails has some support for multiple databases but it can be hard to handle migrations with those. The easiest way to implement multiple databases is to contain migrations into their own folder ("db/migrate" for the primary db and "db/seconddb_migrate" for the second db). Without this you would need to write code that allowed you to switch connections in migrations. I can tell you from experience that is not a fun way to implement multiple databases. This refactoring is a pre-requisite for implementing other features related to parallel testing and improved handling for multiple databases. The refactoring here moves the class methods from the `Migrator` class into it's own new class `MigrationContext`. The goal was to move the `migrations_paths` method off of the `Migrator` class and onto the connection. This allows users to do the following in their `database.yml`: ``` development: adapter: mysql2 username: root password: development_seconddb: adapter: mysql2 username: root password: migrations_paths: "db/second_db_migrate" ``` Migrations for the `seconddb` can now be store in the `db/second_db_migrate` directory. Migrations for the primary database are stored in `db/migrate`". The refactoring here drastically reduces the internal API for migrations since we don't need to pass `migrations_paths` around to every single method. Additionally this change does not require any Rails applications to make changes unless they want to use the new public API. All of the class methods from the `Migrator` class were `nodoc`'d except for the `migrations_paths` and `migrations_path` getter/setters respectively.
* Merge pull request #31717 from rails/redis-cache-store-encodingGeorge Claghorn2018-01-173-1/+27
|\ | | | | Convert keys to binary in the Redis cache store
| * Convert keys to binary in the Redis cache storeGeorge Claghorn2018-01-171-1/+1
| | | | | | | | Fix encoding errors when using the pure-Ruby Redis driver instead of Hiredis. Dodge incompatibilities between UTF-8 and arbitrary value encodings, which rear their heads when the Redis driver tries to build a single command string from incompatibly-encoded keys and values.
| * Test against the pure-Ruby Redis driverGeorge Claghorn2018-01-172-0/+26
| |
* | Merge pull request #31726 from bogdanvlviv/update-layouts_and_rendering-guideEileen M. Uchitelle2018-01-171-1/+1
|\ \ | | | | | | Update "Layouts and Rendering in Rails" guide [ci skip]
| * | Update "Layouts and Rendering in Rails" guide [ci skip]bogdanvlviv2018-01-171-1/+1
|/ / | | | | | | | | | | | | | | | | - Remove mention about `ActionView::TemplateHandlers` since this module was removed by c1304098cca8a9247a9ad1461a1a343354650843. Change word `subclasses` to `nested classes`. See c7408a0e40545558872efb4129fe4bf097c9ce2f - Remove useless sentence "Beginning with Rails 2, the standard extensions are `.erb` for ERB (HTML with embedded Ruby), and `.builder` for Builder (XML generator)."
* / Provide a sensible default hostGeorge Claghorn2018-01-168-13/+15
|/
* Fix constant referenceGeorge Claghorn2018-01-162-3/+2
| | | | Update the long key handling test so it triggers truncation in the Redis cache store.
* Extract content types from blob dataGeorge Claghorn2018-01-1520-32/+151
|
* Merge pull request #27860 from meinac/fix_left_joins_behaviour_with_mergeRyuta Kamizono2018-01-164-1/+37
|\ | | | | Fix relation merger issue with `left_outer_joins`.
| * Fix relation merger issue with `left_outer_joins`Mehmet Emin INAC2018-01-154-1/+37
|/
* Don't allow destroyed object mutation after `save` or `save!` is calledRyuta Kamizono2018-01-153-2/+29
| | | | | | | | | | Currently `object.save` will unfreeze the object, due to `changes_applied` replaces frozen `@attributes` to new `@attributes`. Since originally destroyed objects are not allowed to be mutated, `save` and `save!` should not return success in that case. Fixes #28563.
* `create_database` should not add default charset when `collation` is givenRyuta Kamizono2018-01-152-2/+2
| | | | | | | | | | | | | If `collation` is given without `charset`, it may generate invalid SQL. For example `create_database(:matt_aimonetti, collation: "utf8mb4_bin")`: ``` > CREATE DATABASE `matt_aimonetti` DEFAULT CHARACTER SET `utf8` COLLATE `utf8mb4_bin`; ERROR 1253 (42000): COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'utf8' ``` In MySQL, charset is used to find the default collation. If `collation` is given explicitly, it is not necessary to give extra charset.
* Merge pull request #28313 from sandrew/masterRyuta Kamizono2018-01-152-2/+15
|\ | | | | | | Allow unscoping of left_outer_joins
| * Allow unscoping of left_outer_joinsAndrei Shaidurov2017-03-061-1/+1
| |
* | Merge pull request #31706 from mrhead/fix-test-case-nameRyuta Kamizono2018-01-141-1/+1
|\ \ | | | | | | Change test case name to FormatValidationTest
| * | Change test case name to FormatValidationTestPatrik Bóna2018-01-141-1/+1
|/ / | | | | | | I believe that this was caused by a copy/paste mistake.
* | Don't need to pass `manager` to `convert_join_strings_to_ast`Ryuta Kamizono2018-01-141-2/+2
| | | | | | | | Because `Relation` already have Arel `table`.
* | Don't pass garbage args to alias trackerRyuta Kamizono2018-01-142-11/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This is a complete fix to #30995. Originally alias tracker will only track table aliases on `Arel::Nodes::Join`, other args are ignored. Since c5ab6e5, parent aliases hash will be passed then it caused the regression #30995. It is enough to pass list of `Arel::Nodes::Join` simply, not need to pass garbage args which will be ignored.
* | Merge pull request #31572 from kami-zh/fix-templateYuji Yaginuma2018-01-131-2/+3
|\ \ | | | | | | Fix comment about initializers to adapt to the fact
| * | Fix comment about initializers to adapt to the factkami-zh2017-12-271-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the comment says application configuration should go into files in `config/initializers`. However some configuration couldn't initialize correctly because of the initializing process(e.g. `config.time_zone`). It should be changed by framework but this is large change and it may occur malfunction to some applications which depends on current initializing process. So this comment is changed to adapt to the fact.
* | | `deep_dup` is used in `AttributeSet#deep_dup`Ryuta Kamizono2018-01-132-1/+1
| | |
* | | Merge pull request #31651 from eugeneius/use_sha1_digestsSean Griffin2018-01-128-17/+32
|\ \ \ | | | | | | | | Use SHA-1 for non-sensitive digests by default
| * | | Use SHA-1 for non-sensitive digests by defaultEugene Kenny2018-01-088-17/+32
| | | | | | | | | | | | | | | | | | | | | | | | Instead of providing a configuration option to set the hash function, switch to SHA-1 for new apps and allow upgrading apps to opt in later via `new_framework_defaults_5_2.rb`.
* | | | Merge pull request #31695 from tcopeland/fix_typoRafael França2018-01-121-1/+1
|\ \ \ \ | | | | | | | | | | Fix doc typo [ci-skip]
| * | | | Fix doc typo [ci-skip]Tom Copeland2018-01-121-1/+1
|/ / / /
* | | | Merge pull request #31675 from Dorian/fix-some-broken-links-in-guidesEileen M. Uchitelle2018-01-124-9/+9
|\ \ \ \ | | | | | | | | | | Fix some broken links in guides
| * | | | Fix some broken links in guidesDorian Marié2018-01-114-9/+9
| | | | |
* | | | | Use unsafe_inline as the default for script_src CSP until we get a nonce ↵David Heinemeier Hansson2018-01-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | alternative Closes #31273 but we will still want to upgrade this to the nonce-approach when it’s ready.
* | | | | Add note about having to restart when modifying initializerDavid Heinemeier Hansson2018-01-121-0/+2
| | | | |
* | | | | Use complete variable names rather than single-letter abbreviations for styleDavid Heinemeier Hansson2018-01-121-8/+8
| | | | |
* | | | | Merge pull request #31682 from jameslovejoy/fix-rdoc-typos-documentationMatthew Draper2018-01-125-27/+33
|\ \ \ \ \ | | | | | | | | | | | | Fix typos, update documentation
| * | | | | Fix typos, update documentationJames Lovejoy2018-01-115-27/+33
|/ / / / / | | | | | | | | | | | | | | | [ci skip]
* | | | | Use my fork instead of an thrid-party forkRafael Mendonça França2018-01-112-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | This will avoid the branch being deleted by mistake making all builds to fail.
* | | | | Merge pull request #31671 from larskanis/pg-1.0Rafael Mendonça França2018-01-116-12/+12
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | PostgreSQL: Allow pg-1.0 gem to be used with ActiveRecord
| * | | | PostgreSQL: Update Gemfile to pg-1.0.0Lars Kanis2018-01-102-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Queue_classic currently limits pg to "< 0.20". It is therefore not used for rails CI tests. There has been a bull request for a while (by a co-worker of mine), which fixes the incompatibilities and extends dependencies to pg-1.x. This patch add this pull request to the Gemfile as an interim solution, until it is merged.
| * | | | PostgreSQL: Allow pg-1.0 gem to be used with ActiveRecordLars Kanis2018-01-104-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pg-1.0.0 is just released and most Gemfiles don't restrict it's version. But the version is checked when connecting to the database, which leads to the following error: Gem::LoadError: can't activate pg (~> 0.18), already activated pg-1.0.0 See also this pg issue: https://bitbucket.org/ged/ruby-pg/issues/270/pg-100-x64-mingw32-rails-server-not-start Preparation for pg-1.0 was done in commit f28a331023fab, but the pg version constraint was not yet relaxed.
* | | | | Merge pull request #31653 from ydakuka/fix-typo-0801Eileen M. Uchitelle2018-01-115-5/+5
|\ \ \ \ \ | | | | | | | | | | | | Fix typos [ci skip]
| * | | | | Fix typos [ci skip]Yauheni Dakuka2018-01-115-5/+5
| | | | | |
* | | | | | Instrument image transformationGeorge Claghorn2018-01-101-7/+9
| | | | | |
* | | | | | Instrument preview image drawingGeorge Claghorn2018-01-101-3/+5
| | | | | |
* | | | | | Merge pull request #30268 from ignatiusreza/instrumentationRyuta Kamizono2018-01-114-49/+64
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | add instrumentation for read_multi
| * | | | | | add instrumentation for read_multiIgnatius Reza2017-12-294-49/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | currently it's not possible to know what the hit rates are from read_multi
* | | | | | | Merge pull request #31624 from y-yagi/fix_minitest_511Aaron Patterson2018-01-105-11/+17
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Add support for Minitest 5.11
| * | | | | | | Need to use `klass` to get the class name of the test resultyuuji.yaginuma2018-01-032-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ref: http://docs.seattlerb.org/minitest/Minitest/Result.html#attribute-i-klass
| * | | | | | | Correctly get source locationyuuji.yaginuma2018-01-032-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `filtered_results` returns an instance of `Minitest::Result` since https://github.com/seattlerb/minitest/commit/00433fc0a4fdd0e6b302aace633384ba13122376 `Minitest::Result` is not test class. So cannot get location directly.
| * | | | | | | Use `Minitest::Result` for retain test resultyuuji.yaginuma2018-01-031-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Runnable.marshal_dump/load was removed in https://github.com/seattlerb/minitest/commit/00433fc0a4fdd0e6b302aace633384ba1312237 Instead, `Minitest::Result` is contained test result and the that can be marshalled.
| * | | | | | | Bump Minitest to 5.11.1yuuji.yaginuma2018-01-032-3/+1
| | | | | | | |
* | | | | | | | Merge pull request #23146 from piotrj/issue_18424Ryuta Kamizono2018-01-114-0/+29
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | When deleting through records, take into account association conditions
| * | | | | | | | When deleting through records, take into account association conditionsPiotr Jakubowski2016-05-043-8/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes #18424. When deleting through records, it didn't take into account the conditions that may have been affecting join model table, but was defined in association definition.