aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Merge pull request #31425 from chiastolite/optimize_foregin_keys_queryRyuta Kamizono2017-12-131-2/+3
|\ \ \ \ \ \ | | | | | | | | | | | | | | Optimizing information_schema query for `foreign_keys`
| * | | | | | Optimizing information_schema query for `foreign_keys`Hiroyuki Morita2017-12-131-2/+3
| | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use CONSTRAINT_SCHEMA key for information_schema.referential_constraints. See https://dev.mysql.com/doc/refman/5.7/en/information-schema-optimization.html. ``` > EXPLAIN SELECT fk.referenced_table_name AS 'to_table', fk.referenced_column_name AS 'primary_key', fk.column_name AS 'column', fk.constraint_name AS 'name', rc.update_rule AS 'on_update', rc.delete_rule AS 'on_delete' FROM information_schema.referential_constraints rc JOIN information_schema.key_column_usage fk USING (constraint_schema, constraint_name) WHERE fk.referenced_column_name IS NOT NULL AND fk.table_schema = 'activerecord_unittest' AND fk.table_name = 'fk_test_has_pk' AND rc.constraint_schema = 'activerecord_unittest' AND rc.table_name = 'fk_test_has_pk'\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: rc partitions: NULL type: ALL possible_keys: NULL key: CONSTRAINT_SCHEMA,TABLE_NAME key_len: NULL ref: NULL rows: NULL filtered: NULL Extra: Using where; Open_full_table; Scanned 0 databases *************************** 2. row *************************** id: 1 select_type: SIMPLE table: fk partitions: NULL type: ALL possible_keys: NULL key: TABLE_SCHEMA,TABLE_NAME key_len: NULL ref: NULL rows: NULL filtered: NULL Extra: Using where; Open_full_table; Scanned 0 databases; Using join buffer (Block Nested Loop) 2 rows in set, 1 warning (0.00 sec) ```
* | | | | | Merge pull request #31423 from ↵Ryuta Kamizono2017-12-134-16/+51
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | bogdanvlviv/fix-protected_environments-with-symbols Fix protected environments with symbols
| * | | | | Update 'Configuring Rails Applications' guidebogdanvlviv2017-12-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add mention about `config.active_record.internal_metadata_table_name` - Add mention about `config.active_record.protected_environments`
| * | | | | Convert protected_environments to an array of stringsbogdanvlviv2017-12-123-16/+47
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These changes prevent ignoring environments name of which is a `Symbol` ``` config.active_record.protected_environments = ['staging', :production] ```
* | | | | Make `sanitize_sql_` methods publicyuuji.yaginuma2017-12-135-152/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, sanitize methods are private. So need `send` to use from outside class. However, sometimes want to use sanitize methods from outside Class when want to generate SQL including multiple tables like search. In order to avoid using `send` in such a case, changed methods to public.
* | | | | Merge pull request #31405 from ↵Rafael França2017-12-126-8/+128
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | bogdanvlviv/fix-conflicts-counter_cache-with-touch-by-optimistic_locking Fix conflicts `counter_cache` with `touch: true` by optimistic locking.
| * | | | | Fix conflicts `counter_cache` with `touch: true` by optimistic locking.bogdanvlviv2017-12-126-8/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` # create_table :posts do |t| # t.integer :comments_count, default: 0 # t.integer :lock_version # t.timestamps # end class Post < ApplicationRecord end # create_table :comments do |t| # t.belongs_to :post # end class Comment < ApplicationRecord belongs_to :post, touch: true, counter_cache: true end ``` Before: ``` post = Post.create! # => begin transaction INSERT INTO "posts" ("created_at", "updated_at", "lock_version") VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0) commit transaction comment = Comment.create!(post: post) # => begin transaction INSERT INTO "comments" ("post_id") VALUES (1) UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1, "lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1 UPDATE "posts" SET "updated_at" = '2017-12-11 21:27:11.398330', "lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0 rollback transaction # => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post. Comment.take.destroy! # => begin transaction DELETE FROM "comments" WHERE "comments"."id" = 1 UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1, "lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1 UPDATE "posts" SET "updated_at" = '2017-12-11 21:42:47.785901', "lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0 rollback transaction # => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post. ``` After: ``` post = Post.create! # => begin transaction INSERT INTO "posts" ("created_at", "updated_at", "lock_version") VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0) commit transaction comment = Comment.create!(post: post) # => begin transaction INSERT INTO "comments" ("post_id") VALUES (1) UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1, "lock_version" = COALESCE("lock_version", 0) + 1, "updated_at" = '2017-12-11 21:37:09.802642' WHERE "posts"."id" = 1 commit transaction comment.destroy! # => begin transaction DELETE FROM "comments" WHERE "comments"."id" = 1 UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1, "lock_version" = COALESCE("lock_version", 0) + 1, "updated_at" = '2017-12-11 21:39:02.685520' WHERE "posts"."id" = 1 commit transaction ``` Fixes #31199.
* | | | | | Merge pull request #31421 from tcopeland/trivial_typoRafael França2017-12-121-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix doc typo [ci skip]
| * | | | | | Fix doc typo [ci skip]Tom Copeland2017-12-121-1/+1
|/ / / / / /
* | | | | | Merge pull request #31403 from Edouard-chin/fix-quoted-columnnameRafael França2017-12-122-1/+9
|\ \ \ \ \ \ | | | | | | | | | | | | | | Quote colum_names when building select:
| * | | | | | Quote colum_names when building select:Edouard CHIN2017-12-112-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - #30980 introcuded a change to not use `Arel.star` when model have ignored columns, a query used to look like `SELECT *. FROM developers` whereas now it would like `SELECT column1, column2 FROM developers` - If a column has the same name has a reserved database specific keyword (such as key, where ...) then the query would fail because the names aren't quoted - Quoting almost always happen unless we use a `from` clause in the query https://github.com/rails/rails/blob/9965b98dc0d58a86e10b4343bb6e15e01661a8c3/activerecord/lib/active_record/relation/query_methods.rb#L1052 - This PR cast all columns name to symbols in order for the quoting logic to be picked up https://github.com/rails/rails/blob/9965b98dc0d58a86e10b4343bb6e15e01661a8c3/activerecord/lib/active_record/relation/query_methods.rb#L1054-L1055 - A reproduction script can be found here https://gist.github.com/Edouard-chin/f56d464a0adcb76962afc1a9134a1536
* | | | | | | Merge pull request #31418 from yahonda/revert_31339_to_address_31369Eileen M. Uchitelle2017-12-121-1/+4
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Revert "only install ffmpeg and mupdf on activestorage builds"
| * | | | | | | Revert "only install ffmpeg and mupdf on activestorage builds"Yasuo Honda2017-12-121-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6ec0ed67d9afcc666ad0424b10e9903f63e60714.
* | | | | | | | Merge pull request #31416 from meinac/minor_fix_on_active_support_changelogRyuta Kamizono2017-12-121-1/+1
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | [ci skip] Fix Active Support Changelog about :race_condition_ttl
| * | | | | | | [ci skip] Fix Active Support Changelog about :race_condition_ttlMehmet Emin INAC2017-12-121-1/+1
|/ / / / / / /
* | | | | | | Merge pull request #31414 from fatkodima/ignore_tables-commentRyuta Kamizono2017-12-121-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Remove stale comment about `ActiveRecord::SchemaDumper.ignore_tables` [skip ci]
| * | | | | | | Remove stale comment about `ActiveRecord::SchemaDumper.ignore_tables` [skip ci]fatkodima2017-12-121-1/+1
|/ / / / / / /
* | | | | | | Enable `Layout/SpaceBeforeComma` rubocop rule, and fixed moreRyuta Kamizono2017-12-1224-43/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up of #31390.
* | | | | | | Merge pull request #31411 from eugeneius/time_helpers_redefine_methodRyuta Kamizono2017-12-121-1/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Prevent race condition when resetting time stubs
| * | | | | | | Prevent race condition when resetting time stubsEugene Kenny2017-12-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the current thread is preempted after the stub has been removed but before the original method has been restored, then the other thread will get a `NoMethodError` when it tries to call the method. Using `silence_redefinition_of_method` instead of `undef_method` ensures that either the stub or the original method is always in place.
* | | | | | | | Merge pull request #31410 from swrobel/patch-3Ryuta Kamizono2017-12-121-1/+1
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | Fix secrets command deprecation message
| * | | | | | | Fix secrets command deprecation messageStefan Wrobel2017-12-111-1/+1
| | | | | | | |
* | | | | | | | Merge pull request #31402 from yhirano55/update_routing_guide_for_direct_methodRyuta Kamizono2017-12-121-0/+43
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | [ci skip] Update routing guide for Direct & resolved routes
| * | | | | | | [ci skip] Update routing guide for DirectYoshiyuki Hirano2017-12-121-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Added the direct method to routing guide.
* | | | | | | | Fix optimizing GIF variants using mogrify's -layers optionGeorge Claghorn2017-12-111-5/+7
| | | | | | | |
* | | | | | | | Revert "Invoke mogrify once when transforming an image"George Claghorn2017-12-111-8/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a80f81af055f02bf4625c90470aa90441cf6fc24.
* | | | | | | | Merge pull request #31407 from Edouard-chin/remove-create-fixtures-helperRafael França2017-12-111-4/+0
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | | `create_fixtures` doesn't work since at least a94220b
| * | | | | | | `create_fixtures` doesn't work since at least ↵Edouard CHIN2017-12-111-4/+0
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a94220b66c9e4890007f66b092b25f8a64a19d31: - The namespacing should be `ActiveRecord::FixtureSet` - I might be missing something but I'm not sure why `create_fixtures` is useful for nowaday (unless for testing rails internal /shrug) and since it's been that long it wasn't working I think it should be fine to just fire it
* | | | | | | Merge pull request #31399 from yhirano55/return_nil_if_raise_http_errorGeorge Claghorn2017-12-111-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Return `nil` instead of `false` if raise `Azure::Core::Http::HTTPError`
| * | | | | | | Return `nil` instead of `false` if raise `Azure::Core::Http::HTTPError`Yoshiyuki Hirano2017-12-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * If it raise error `Azure::Core::Http::HTTPError`, return `nil` instead of `false` in `ActiveStorage::Service::AzureStorageService#delete`. * Other services behave as same as this.
* | | | | | | | Merge pull request #31401 from ↵George Claghorn2017-12-111-0/+7
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | yhirano55/update_instrumentation_guide_for_active_storage_service [ci skip] Update instrumentation guide for ActiveStorage
| * | | | | | | [ci skip] Update instrumentation guide for ActiveStorageYoshiyuki Hirano2017-12-121-0/+7
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | * Added `service_delete_prefixed.active_storage`.
* / | | | | | Invoke mogrify once when transforming an imageGeorge Claghorn2017-12-111-6/+8
|/ / / / / / | | | | | | | | | | | | | | | | | | Execute a single mogrify command with multiple options rather than one command per option. Permit the use of all mogrify options, not just the ones that fall through to MiniMagick::Image#method_missing.
* | | | | | Merge pull request #30361 from mfo/masterEileen M. Uchitelle2017-12-114-1/+25
|\ \ \ \ \ \ | | | | | | | | | | | | | | StreamingTemplateRenderer fails to forward I18n.locale in layouts
| * | | | | | fix(streaming_template_renderer): I18n.locale broken in layout. I18n gem ↵mfo2017-11-254-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | stores the current locale in Thread.current[:local] (see: https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb#L23). StreamingTemplateRenderer is implemented with Fiber which have its own stack of locals and can not access Thread.current.locals(keys, see: https://ruby-doc.org/core-2.2.0/Thread.html#class-Thread-label-Fiber-local+vs.+Thread-local).
* | | | | | | Merge pull request #31389 from yhirano55/webpack_config_in_active_storageJavan Makhmali2017-12-111-1/+0
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | `webpack` is assigned but never used in webpack.config.js
| * | | | | | `webpack` is assigned but never used in webpack.config.jsYoshiyuki Hirano2017-12-111-1/+0
| | |/ / / / | |/| | | | | | | | | | | | | | | | * Removed webpack const, so it is assigned but never used in webpack.config.js.
* | | | | | Merge pull request #31390 from lonre/patch-1Eileen M. Uchitelle2017-12-101-1/+1
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Remove whitespace
| * | | | | Update validates.rbLonre Wang2017-12-101-1/+1
|/ / / / /
* | | | | Reset schema cache after testyuuji.yaginuma2017-12-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, `test_copy_table_with_composite_primary_keys` test fails depending on execution order. The reproduction step is as follows. ``` $ ARCONN=sqlite3_mem bin/test -w -n "/^(?:CalculationsTest#(?:test_#skip_query_cache\\!_for_a_simple_calculation)|PrimaryKeyAnyTypeTest#(?:test_any_type_primary_key)|ActiveRecord::ConnectionAdapters::SQLite3AdapterTest#(?:test_copy_table_with_composite_primary_keys))$/" --seed 41545 ``` The column info is cached by `PrimaryKeyAnyTypeTest#test_any_type_primary_key`, and the test seems to have failed due to the influence. So clear cache after testing so as not to affect other tests. Related: https://travis-ci.org/rails/rails/jobs/313730163#L1788
* | | | | Merge pull request #31384 from rails/dont-override-serverGuillermo Iguaran2017-12-093-2/+24
|\ \ \ \ \ | | | | | | | | | | | | Change the system tests to set Puma as default server only when the user haven't specified manually another server.
| * | | | | Change the system tests to set Puma as default server only when the user ↵Guillermo Iguaran2017-12-093-2/+24
|/ / / / / | | | | | | | | | | | | | | | haven't specified manually another server.
* | | | | Add secure `X-Download-Options` and `X-Permitted-Cross-Domain-Policies` to ↵Guillermo Iguaran2017-12-094-4/+15
| | | | | | | | | | | | | | | | | | | | default headers set.
* | | | | Merge pull request #31379 from bogdanvlviv/ci-against-jruby_9_1_15Ryuta Kamizono2017-12-091-3/+3
|\ \ \ \ \ | | | | | | | | | | | | CI against JRuby 9.1.15.0
| * | | | | CI against JRuby 9.1.15.0bogdanvlviv2017-12-081-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JRuby 9.1.15.0 has been released: http://jruby.org/2017/12/07/jruby-9-1-15-0.html
* | | | | | Merge pull request #31354 from maciej-ka/docs-link_to-nil-name-exampleClaudio B2017-12-081-0/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | docs: add example for a nil name in link_to
| * | | | | | docs: add example for a nil name in link_tomaciej-ka2017-12-071-0/+5
| | | | | | |
* | | | | | | Merge pull request #31355 from rails/fix-rails-env-with-rubyAaron Patterson2017-12-085-3/+82
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | Fix Rails environment when running tests with Ruby
| * | | | | | Set the Rails environment from an environment variableAaron Patterson2017-12-082-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Option parsing happens too late to have any impact on the Rails environment. Rails accesses the environment name and memoizes it too early in the boot process for a commandline option to have any impact on the database connection, so we'll change this test to set the environment from an environment variable (and ensure it still works when running tests with `ruby`)