aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* CI against JRuby 9.1.14.0Koichi ITO2017-11-151-3/+3
| | | | | JRuby 9.1.14.0 has been released and this version is available on Travis CI. http://jruby.org/2017/11/08/jruby-9-1-14-0
* Introduce ActiveStorage::Attached::{One,Many}#detachGeorge Claghorn2017-11-143-7/+40
|
* Merge pull request #31151 from nikolai-b/exists_docRyuta Kamizono2017-11-141-1/+2
|\ | | | | Update `exists?` documentation [ci skip]
| * Update `exists?` documentationNikolai B2017-11-141-1/+2
| | | | | | | | Make it clear that `exists?` can be chained onto a relation
* | Merge pull request #30884 from robwold/patch-1Eileen M. Uchitelle2017-11-141-1/+1
|\ \ | |/ |/| Update layouts_and_rendering.md [ci skip]
| * Update layouts_and_rendering.md [ci skip]Rob2017-11-141-1/+1
| |
* | Merge pull request #27947 from mastahyeti/unsafe_raw_sqlMatthew Draper2017-11-1413-33/+462
|\ \ | | | | | | | | | Disallow raw SQL in dangerous AR methods
| * | use database agnostic function/quoting in testBen Toews2017-11-091-4/+4
| | |
| * | push order arg checks down to allow for bindsBen Toews2017-11-093-28/+47
| | |
| * | deal with Array arguments to #orderBen Toews2017-11-093-4/+22
| | |
| * | convert order arg to string before checking if we can reverse itBen Toews2017-11-092-2/+6
| | |
| * | use << instead of #concat in #reverse_sql_order because we might be working ↵Ben Toews2017-11-092-2/+2
| | | | | | | | | | | | with Arel SQL literator which overrides #concat
| * | try using regexesBen Toews2017-11-0927-166/+120
| | |
| * | allow table name and direction in string order argBen Toews2017-11-0927-244/+295
| | |
| * | work around deprecation warnings in a bunch of testsBen Toews2017-11-0934-313/+320
| | |
| * | always allow Arel::Attributes::Attribute alsoBen Toews2017-11-091-1/+3
| | |
| * | call enforce_raw_sql_whitelist on @klass so it works with FakeKlassBen Toews2017-11-091-2/+2
| | |
| * | work with actual string when reversing orderBen Toews2017-11-091-0/+3
| | |
| * | remove :enabled optionBen Toews2017-11-093-59/+52
| | |
| * | beef up deprecation warningBen Toews2017-11-091-3/+7
| | |
| * | make tests more verbose/explicitBen Toews2017-11-091-78/+96
| | |
| * | allow Arel.sql() for pluckBen Toews2017-11-098-101/+159
| | |
| * | add config to check arguments to unsafe AR methodsBen Toews2017-11-096-21/+293
| | |
* | | Cache: Enable compression by default for values > 1kB.Jeremy Daer2017-11-135-16/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compression has long been available, but opt-in and at a 16kB threshold. It wasn't enabled by default due to CPU cost. Today it's cheap and typical cache data is eminently compressible, such as HTML or JSON fragments. Compression dramatically reduces Memcached/Redis mem usage, which means the same cache servers can store more data, which means higher hit rates. To disable compression, pass `compress: false` to the initializer.
* | | Add `environment` as dependency of `load_config` (#31135)Yuji Yaginuma2017-11-142-26/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the environment is not loaded in some db tasks. Therefore, if use encrypted secrets values in `database.yml`, `read_encrypted_secrets` will not be true, so the value can not be used correctly. To fix this, added `environment` as dependency of `load_config`. It also removes explicit `environment` dependencies that are no longer needed. Fixes #30717
* | | Built-in Redis cache storeJeremy Daer2017-11-137-15/+684
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Supports vanilla Redis, hiredis, and Redis::Distributed. * Supports Memcached-like sharding across Redises with Redis::Distributed. * Fault tolerant. If the Redis server is unavailable, no exceptions are raised. Cache fetches are treated as misses and writes are dropped. * Local cache. Hot in-memory primary cache within block/middleware scope. * `read_/write_multi` support for Redis mget/mset. Use Redis::Distributed 4.0.1+ for distributed mget support. * `delete_matched` support for Redis KEYS globs.
* | | Merge pull request #30782 from NickLaMuro/improve_performance_of_inflectionsMatthew Draper2017-11-146-10/+31
|\ \ \ | | | | | | | | Cache regexps generated from acronym_regex
| * | | 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.
* | | | Merge pull request #31145 from dwightwatson/feature/preview-sortingRafael França2017-11-131-1/+1
|\ \ \ \ | | | | | | | | | | Sort mailer previews alphabetically
| * | | | Sort mailer previewsDwight Watson2017-11-141-1/+1
|/ / / /
* | | | Preserve existing metadata when analyzing a blobGeorge Claghorn2017-11-133-3/+28
| | | | | | | | | | | | | | | | Closes #31138.
* | | | Merge pull request #31117 from renuo/fix_errors_addedRafael França2017-11-132-3/+14
|\ \ \ \ | | | | | | | | | | fix bug on added? method
| * | | | fix bug on added? methodAlessandro Rodi2017-11-132-3/+14
| | | | | | | | | | | | | | | | | | | | fix rubocop issues
* | | | | Properly cast input in `update_all`Sean Griffin2017-11-133-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation claims that given values go through "normal AR type casting and serialization", which to me implies `serialize(cast(value))`, not just serialization. The docs were changed to use this wording in #22492. The tests I cited in that PR (which is the same test modified in this commit), is worded in a way that implies it should be using `cast` as well. It's possible that I originally meant "normal type casting" to imply just the call to `serialize`, but given that `update_all(archived: params['archived'])` seems to be pretty common, I'm inclined to make this change as long as no tests are broken from it.
* | | | | Merge pull request #30980 from sobrinho/sobrinho/arel-star-ignored-columnsRafael França2017-11-136-45/+68
|\ \ \ \ \ | | | | | | | | | | | | Do not use `Arel.star` when `ignored_columns`
| * | | | | Fix postgres ordering issue on default scoping testGabriel Sobrinho2017-11-131-15/+15
| | | | | |
| * | | | | Change tests to use models which don't ignore any columnsJon Moss2017-11-133-30/+30
| | | | | |
| * | | | | Do not use `Arel.star` when `ignored_columns`Jon Moss2017-11-132-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If there are any ignored columns, we will now list out all columns we want to be returned from the database. Includes a regression test.
* | | | | | Use .tt extension to all the template filesRafael Mendonça França2017-11-13113-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make clear that the files are not to be run for interpreters. Fixes #23847. Fixes #30690. Closes #23878.
* | | | | | Merge pull request #31137 from ↵Ryuta Kamizono2017-11-133-11/+9
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | y-yagi/make_sidekiq_and_resque_integration_tests_work_in_ci Make sidekiq and resque integration tests work in ci
| * | | | | | Make sidekiq and resque integration tests work in CIyuuji.yaginuma2017-11-133-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 8f2490b, the integration test of sidekiq and resque is not working in CI. https://travis-ci.org/rails/rails/jobs/301276197#L2055 https://travis-ci.org/rails/rails/jobs/301276197#L2061 Because 8f2490b removed password from `redis-server`. So must also remove passwords from these tests.
| * | | | | | Return a non zero code when can not connect to redis in CIyuuji.yaginuma2017-11-132-2/+4
| | | | | | |
* | | | | | | Add new error class `StatementTimeout` which will be raised when statement ↵Ryuta Kamizono2017-11-136-2/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timeout exceeded (#31129) We are sometimes using The MAX_EXECUTION_TIME hint for MySQL depending on the situation. It will prevent catastrophic performance down by wrong performing queries. The new error class `StatementTimeout` will make to be easier to handle that case. https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-hints-execution-time
* | | | | | | Merge pull request #31139 from avneetmalhotra/touch_callback_documentation_fixRyuta Kamizono2017-11-131-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move touch method from Skipping Callbacks section to Running Callback… [ci skip]
| * | | | | | | Move touch method from Skipping Callbacks section to Running Callbacks ↵Avneet Singh Malhotra2017-11-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | section [ci skip]
* | | | | | | | Merge pull request #30893 from y-yagi/verify_credentials_format_before_savingKasper Timm Hansen2017-11-132-1/+15
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Verify credentials format before saving
| * | | | | | | Verify credentials format before savingyuuji.yaginuma2017-11-132-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, credentials does not check the format when saving. As a result, incorrect data as yaml is also saved. If credentials is used in config files., an error will occur in credential yaml parsing before edit, and will not be able to edit it. In order to prevent this, verify the format when saving. Related: #30851
* | | | | | | | Action Cable: run Redis tests against a default config without a passwordJeremy Daer2017-11-132-3/+22
| |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify our dev testing and CI story since we're also testing against Redis for the Active Support cache store. Directly test whether db, host, password, etc are passed through as config instead of spinning up a Redis server with a password set on it.
* | | | | | | Merge pull request #30773 from y-yagi/fix_30765Eileen M. Uchitelle2017-11-123-1/+36
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Make automatically synchronize test schema work inside engine