aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Deprecate ActiveSupport::Inflector#acronym_regexNick LaMuro2017-10-285-6/+15
| | | | | | | | | To be removed in Rails 6.0 (default for the deprecate helper). Code moved around as well for the ActiveSupport::Deprecation modules, since it was dependent on ActiveSupport::Inflector being loaded for it to work. By "lazy loading" the Inflector code from within the Deprecation code, we can require ActiveSupport::Deprecation from ActiveSupport::Inflector and not get a circular dependency issue.
* Cache regexps generated from acronym_regexNick LaMuro2017-10-233-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Problem ----------- The following line from `String#camelize`: string = string.sub(/^(?:#{inflections.acronym_regex}(?=\b|[A-Z_])|\w)/) { |match| match.downcase } and the following line from `String#camelize`: word.gsub!(/(?:(?<=([A-Za-z\d]))|\b)(#{inflections.acronym_regex})(?=\b|[^a-z])/) { "#{$1 && '_'.freeze }#{$2.downcase}" }#{$2.downcase}" } Both generate the same regexep in the first part of the `.sub`/`.gsub` method calls every time the function is called, creating an extra object allocation each time. The value of `acronym_regex` only changes if the user decides add an acronym to the current set of inflections and apends another string on the the regexp generated here, but beyond that it remains relatively static. This has been around since acronym support was introduced back in 2011 in PR#1648. Proposed Solution ----------------- To avoid re-generating these strings every time these methods are called, cache the values of these regular expressions in the `ActiveSupport::Inflector::Inflections` instance, making it so these regular expressions are only generated once, or when the acronym's are added to. Other notable changes is the attr_readers are nodoc'd, as they shouldn't really be public APIs for users. Also, the new method, define_acronym_regex_patterns, is the only method in charge of manipulating @acronym_regex, and initialize_dup also makes use of that new change. ** Note about fix for non-deterministic actionpack test ** With the introduction of `@acronym_underscore_regex` and `@acronym_camelize_regex`, tests that manipulated these for a short time, then reset them could caused test failures to happen. This happened because the previous way we reset the `@acronyms` and `@acronym_regex` was the set them using #instance_variable_set, which wouldn't run the #define_acronym_regex_patterns method. This has now been introduced into the actionpack tests to avoid this failure.
* Fix duplicate aliases when using both INNER/LEFT JOINsRyuta Kamizono2017-10-232-3/+9
| | | | | | | | It should be shared the count of alias tracking in both INNER/LEFT JOINs to avoid duplicate aliases. Fixes #30504. Closes #30410.
* Ensure associations doesn't table name collide with string joinsRyuta Kamizono2017-10-232-4/+11
| | | | | Currently we have no test for alias tracking with string joins. I've add test case for that to catch a future regression.
* Use the indicative mood consistently [ci skip]George Claghorn2017-10-221-1/+1
|
* Place `MocktailDesigner` in `test/models/drink_designer.rb`Ryuta Kamizono2017-10-233-5/+3
| | | | | Since `MocktailDesigner` inherits `DrinkDesigner` and can not be used alone.
* Fix links [ci skip]George Claghorn2017-10-221-2/+2
|
* Extract metadata from images and videosGeorge Claghorn2017-10-2225-37/+407
|
* Merge pull request #30949 from bogdanvlviv/add-30850-to-changelogEileen M. Uchitelle2017-10-221-0/+7
|\ | | | | Add changelog entry about new `allow_other_host` option for `redirect_back` method
| * Add changelog entry about new `allow_other_host` option for `redirect_back` ↵bogdanvlviv2017-10-221-0/+7
| | | | | | | | | | | | method [ci skip] Related to #30850
* | Merge pull request #30821 from GBH/active-storage-readmeEileen M. Uchitelle2017-10-221-0/+4
|\ \ | | | | | | ActiveStorage install note [skip ci]
| * | how do we install active_storage? [skip ci]Oleg2017-10-061-0/+4
| | |
* | | Merge pull request #29710 from padi/rails-ujs-docsGuillermo Iguaran2017-10-222-0/+25
|\ \ \ | | | | | | | | Adds descriptions to rails-ujs methods [ci skip]
| * | | Adds descriptions to rails-ujs methods [ci skip]Marc Rendl Ignacio2017-07-072-0/+25
| | | |
* | | | Avoid slicing from Thor's original HWIAAkira Matsuda2017-10-221-2/+1
| |_|/ |/| | | | | | | | | | | | | | | | | | | | Because `options` here is not AS::HWIA but an instance of Thor::CoreExt::HWIA that looks very similar to ours but behaves slightly different, we need to keep this object be an instance of Thor::CoreExt::HWIA. Since Ruby 2.5 has Hash#slice that returns a new Hash instance now, we need to avoid calling `slice` on this tricky object.
* | | [Active Storage] require_relative => requireAkira Matsuda2017-10-211-1/+1
| | |
* | | [Action Cable] require_relative => requireAkira Matsuda2017-10-213-3/+3
| | | | | | | | | | | | This basically reverts f851e1f705f26d8f92f0fc1b265b20bc389d23cb
* | | [Active Job] require_relative => requireAkira Matsuda2017-10-214-13/+13
| | | | | | | | | | | | This basically reverts fef234f1f0a238c2277459652861144ae89501ff
* | | [Action Mailer] require_relative => requireAkira Matsuda2017-10-212-4/+4
| | | | | | | | | | | | This basically reverts cd9cc721ab54e2b0c7875cacf2113f03908a8bb7
* | | [Action View] require_relative => requireAkira Matsuda2017-10-2125-35/+35
| | | | | | | | | | | | This basically reverts c4d1a4efeec6f0b5b58222993aa0bec85a19b6a8
* | | [Action Pack] require => require_relativeAkira Matsuda2017-10-2137-70/+70
| | | | | | | | | | | | | | | This basically reverts e9fca7668b9eba82bcc832cb0061459703368397, d08da958b9ae17d4bbe4c9d7db497ece2450db5f, d1fe1dcf8ab1c0210a37c2a78c1ee52cf199a66d, and 68eaf7b4d5f2bb56d939f71c5ece2d61cf6680a3
* | | [Active Record] require => require_relativeAkira Matsuda2017-10-2135-134/+134
| | | | | | | | | | | | This basically reverts 9d4f79d3d394edb74fa2192e5d9ad7b09ce50c6d
* | | [Active Model] require => require_relativeAkira Matsuda2017-10-217-25/+25
| | | | | | | | | | | | This basically reverts ee5cfc01a5797f854c8441539b0cae326a81b963
* | | [Active Support] require_relative => requireAkira Matsuda2017-10-21129-386/+386
| | | | | | | | | | | | This basically reverts 8da30ad6be34339124ba4cb4e36aea260dda12bc
* | | [Railties] require_relative => requireAkira Matsuda2017-10-2174-115/+115
| | | | | | | | | | | | This basically reverts 618268b4b9382f4bcf004a945fe2d85c0bd03e32
* | | Let Hash#slice return a HashAkira Matsuda2017-10-212-1/+5
| | | | | | | | | | | | | | | | | | | | | In order to keep this method compatible with the Ruby 2.5 version of Hash#slice. This bahavior is actually slightly incompatibile with previous versions of Active Support but it might not cause a real problem, since HWIA, the biggest use case of Hash subclassing here, already overrides `slice` to return another HWIA.
* | | Move HWIA specific logic for slice and slice! to HWIA classAkira Matsuda2017-10-212-2/+10
| | |
* | | Hash#slice is in Ruby 2.5+Akira Matsuda2017-10-211-1/+1
| | | | | | | | | | | | since r60229
* | | Add test cases for `type` and `foreign_type` in the reflectionsRyuta Kamizono2017-10-211-0/+7
| | | | | | | | | | | | It should be initialized only when polymorphic associations.
* | | bundle lock --add-platform javaAkira Matsuda2017-10-201-0/+27
| | | | | | | | | | | | "The dependency activerecord-jdbcsqlite3-adapter (>= 1.3.0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby, x64-mingw32, x86-mingw32 but the dependency is only for java. To add those platforms to the bundle, run `bundle lock --add-platform java`."
* | | Merge pull request #30928 from Altech/indifferent-ignored-columnsRyuta Kamizono2017-10-203-15/+37
|\ \ \ | | | | | | | | Allow symbol list for ignored_columns
| * | | Convert ignored_columns to a list of stringAltech2017-10-203-15/+37
| | | |
* | | | Merge pull request #30936 from maxfelsher/html-escape-doc-fixRyuta Kamizono2017-10-201-3/+0
|\ \ \ \ | | | | | | | | | | Remove obsolete documentation for html_escape [ci skip]
| * | | | Remove obsolete documentation [ci skip]Max Felsher2017-10-191-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | Instructions to use `h` or `html_escape` in ERB templates were added to `actionpack/lib/action_view/template_handlers/erb.rb` in a1b0349 (Rails 2.1), but ERB has automatically escaped values since Rails 3.
* | | | | Merge pull request #30938 from y-yagi/_return_correct_exit_status_of_ujs_testRyuta Kamizono2017-10-201-1/+1
|\ \ \ \ \ | |/ / / / |/| | | | Return correct exit status of ujs test
| * | | | Return correct exit status of ujs testyuuji.yaginuma2017-10-201-1/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | The `Process::Status#to_i` returns the bits in stat. If need exit status, need to use `#exitstatus`. Ref: https://ruby-doc.org/core-2.4.0/Process/Status.html#method-i-to_i
* | | | Keep `:api: plugin` methods in the doc [ci skip]Ryuta Kamizono2017-10-202-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | `:api:` tag was removed in 5349f231 since RDoc doesn't support `:api:` tag. But those methods are not private API, they are public API for renderers. The renderers should be able to know that they can override this method.
* | | | Merge pull request #30930 from rails/replace-phantomjs-with-chromeGuillermo Iguaran2017-10-196-151/+31
|\ \ \ \ | |/ / / |/| | | PhantomJS is abandoned, replace it with Selenium/Chrome headless
| * | | Count assertions instead of tests in reportGuillermo Iguaran2017-10-191-1/+1
| | | |
| * | | PhantomJS is abandoned, replace it with Selenium/Chrome headlessGuillermo Iguaran2017-10-196-151/+31
|/ / /
* | | Merge pull request #29127 from DmytroVasin/rails-ujs-remote-callbacksGuillermo Iguaran2017-10-193-69/+34
|\ \ \ | | | | | | | | Fix callback in rails ujs
| * | | Fix callback in rails ujsVasin Dmitriy2017-06-073-69/+34
| | | |
* | | | Test `ignored_columns` value is inheritable by subclassesRyuta Kamizono2017-10-192-0/+10
| | | |
* | | | Merge pull request #30927 from y-yagi/remove_unused_fixture_templateRyuta Kamizono2017-10-191-11/+0
|\ \ \ \ | | | | | | | | | | Remove unused `FixtureTemplate` class
| * | | | Remove unused `FixtureTemplate` classyuuji.yaginuma2017-10-191-11/+0
|/ / / / | | | | | | | | | | | | `FixtureTemplate` is no longer used since 3d7892d.
* | | | Merge pull request #30579 from ↵Sean Griffin2017-10-184-12/+83
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | bogdanvlviv/fix_ar_internal_metadata_for_a_test_database Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong ar_internal_metadata's data for a test database.
| * | | | `ActiveRecord::Tasks::DatabaseTasks.load_schema` has always to establish ↵bogdanvlviv2017-10-152-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | database connection When load schema from `structure.sql`, database connection isn't established. `ActiveRecord::Tasks::DatabaseTasks.load_schema` has to establish database connection since it executes ``` ActiveRecord::InternalMetadata.create_table ActiveRecord::InternalMetadata[:environment] = environment ```
| * | | | Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong ↵bogdanvlviv2017-10-154-9/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ar_internal_metadata's data for a test database. Before: ``` $ RAILS_ENV=test rails dbconsole > SELECT * FROM ar_internal_metadata; key|value|created_at|updated_at environment|development|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679 ``` After: ``` $ RAILS_ENV=test rails dbconsole > SELECT * FROM ar_internal_metadata; key|value|created_at|updated_at environment|test|2017-09-11 23:14:10.815679|2017-09-11 23:14:10.815679 ``` Fixes #26731.
* | | | | Merge pull request #30923 from rails/chromedriverhelperGuillermo Iguaran2017-10-182-0/+4
|\ \ \ \ \ | | | | | | | | | | | | Improve out-of-box experience with System tests including chromedriver-helper by default
| * | | | | Improve out-of-box experience with System tests including ↵Guillermo Iguaran2017-10-182-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | chromedriver-helper by default