aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/cache.rb
Commit message (Collapse)AuthorAgeFilesLines
* explain why require_relative is not used here [ci skip]Xavier Noria2017-07-161-0/+2
|
* Fix configuring third-party cache stores such as ↵George Claghorn2017-07-121-1/+1
| | | | | | ActiveSupport::Cache::RedisStore Broken in 8da30ad.
* [Active Support] `rubocop -a --only Layout/EmptyLineAfterMagicComment`Koichi ITO2017-07-111-0/+1
|
* Use frozen-string-literal in ActiveSupportKir Shatrov2017-07-091-0/+1
|
* Merge branch 'master' into require_relative_2017Xavier Noria2017-07-021-1/+1
|\
| * Revert "Merge pull request #29540 from kirs/rubocop-frozen-string"Matthew Draper2017-07-021-1/+0
| | | | | | | | | | This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
| * Merge pull request #29540 from kirs/rubocop-frozen-stringMatthew Draper2017-07-021-0/+1
| |\ | | | | | | | | | Enforce frozen string in Rubocop
| | * Enforce frozen string in RubocopKir Shatrov2017-07-011-0/+1
| | |
| * | Make ActiveSupport frozen string literal friendly.Pat Allan2017-06-201-1/+1
| |/ | | | | | | | | | | | | The ActiveSupport test suite only passes currently if it uses the latest unreleased commits for dalli, and a patch for Builder: https://github.com/tenderlove/builder/pull/6 Beyond that, all external dependencies (at least, to the extent they’re used by ActiveSupport) are happy, including Nokogiri as of 1.8.0.
* / [Active Support] require => require_relativeAkira Matsuda2017-07-011-8/+8
|/
* Revert #25628. Incomplete change + needs a deprecation cycle.Jeremy Daer2017-06-101-1/+1
| | | | | | | | | See https://github.com/rails/rails/issues/29067#issuecomment-301342084 for rationale. This reverts commit b76f82d714e590c20370e72fa36fa574c4f17650. Fixes #29067. Fixes #29081.
* Cache: write_multi (#29366)Jeremy Daer2017-06-061-6/+28
| | | | | | | | | | | Rails.cache.write_multi foo: 'bar', baz: 'qux' Plus faster `fetch_multi` with stores that implement `write_multi_entries`. Keys that aren't found may be written to the cache store in one shot instead of separate writes. The default implementation simply calls `write_entry` for each entry. Stores may override if they're capable of one-shot bulk writes, like Redis `MSET`.
* Fix a RuboCop offences using `rubocop -a`Koichi ITO2017-05-241-2/+0
|
* Remove unused mismatch payload attributeDavid Heinemeier Hansson2017-05-201-5/+1
|
* Add cache_key_with_version and use it in ActiveSupport::Cache.expand_cache_keyDavid Heinemeier Hansson2017-05-191-4/+5
| | | | | | This retains the existing behavior of ActiveSupport::Cache.expand_cache_key (as used by etaging) where the cache key includes the version.
* Use recyclable cache keys (#29092)David Heinemeier Hansson2017-05-181-17/+61
|
* Revert "Merge pull request #28788 from ↵Rafael Mendonça França2017-04-181-1/+0
| | | | | | | | | | | | | tjschuck/require_as_notifications_in_cache" This reverts commit b86631d9d9f12d834868ff44735ff551668bfb8a, reversing changes made to 8776a7139757d0b264785c774d4e7f37d4bc1ac7. ActiveSupport::Notifications is loaded using autoload that is defined by the top level file of `active_support`. All the frameworks of Rails requires the top level files before using any of the others files inside the framework because the top level file is what setup the autoload hooks and require the common dependencies.
* Explicitly require AS::Notifications in AS::CacheT.J. Schuck2017-04-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Right now, if you install the current release version of Active Support (5.0.2) and try to use its cache implementation standalone by requiring `active_support/cache`, it crashes with `NameError: uninitialized constant ActiveSupport::Notifications`. `AS::Notifications` is used in `cache.rb` down around [line 555](https://github.com/rails/rails/blob/8776a7139757d0b264785c774d4e7f37d4bc1ac7/activesupport/lib/active_support/cache.rb#L555). Here's a quick repro script: ```ruby require "bundler/inline" gemfile(true) do source "https://rubygems.org" gem "activesupport", "5.0.2" end require "active_support/cache" cache_store = ActiveSupport::Cache::MemoryStore.new cache_store.write('test', 'okay') puts cache_store.read('test') ``` However, any version _newer_ than 5.0.2 passes. This is because [this commit](https://github.com/rails/rails/commit/75924c4517c8f87712d3f59c11f10152ed57b9d8) inadvertently included `AS::Notifications` into `AS::Cache` (thus fixing the issue) by mixing [`AS::Deprecation` into `AS::Duration`](https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/duration.rb#L4), giving you a nice require chain of [`Cache` including `Time`][1] [including `Duration`][2] [including `Deprecation`][3] [including `Behaviors`][4] [including `Notifications`][5]. Phew. Aside from being not very explicit, the fact that the fixing is specifically done by `AS::Deprecation` means that this fix is probably only temporary (until the deprecation is removed). This PR just makes the inclusion explicit to future-proof against this breakage. (Ideally, this would also be backported to `5-0-stable` to get picked up in any subsequent point release.) See also: https://github.com/rails/rails/pull/14667 [1]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/cache.rb#L6 [2]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/time.rb#L2 [3]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/duration.rb#L4 [4]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/deprecation.rb#L16 [5]: https://github.com/rails/rails/blob/75924c4517c8f87712d3f59c11f10152ed57b9d8/activesupport/lib/active_support/deprecation/behaviors.rb#L1
* Remove unused requireRyuta Kamizono2017-02-121-1/+0
| | | | | | These files are not using `strip_heredoc`. Closes #27976
* Fix sample code for `expand_cache_key` usage [ci skip]kenta-s2017-01-241-2/+2
|
* Privatize unneededly protected methods in Active SupportAkira Matsuda2016-12-241-6/+5
|
* No need to nodoc private methodsAkira Matsuda2016-12-241-2/+2
|
* Remove deprecated namespaced_keyAndrew White2016-11-131-8/+0
|
* Add more rubocop rules about whitespacesRafael Mendonça França2016-10-291-1/+1
|
* Merge pull request #26531 from y-yagi/remove_unused_benchmarkRafael França2016-10-101-2/+0
|\ | | | | remove unused require `benchmark`
| * remove unused require `benchmark`yuuji.yaginuma2016-09-171-2/+0
| | | | | | | | `Benchmark` was removed at 4215e9a
* | Merge pull request #26524 from y-yagi/add_check_of_argumentRichard Schneeman2016-09-221-0/+5
|\ \ | | | | | | add check of argument
| * | add check of argumentyuuji.yaginuma2016-09-171-0/+5
| |/ | | | | | | | | | | | | `#fetch_multi` in case did not cache hit, to write a cache using the block value. https://github.com/rails/rails/blob/master/activesupport/lib/active_support/cache.rb#L383..L384 Therefore, block is a need to pass always, I think should check first.
* / fix formatting of `Cache::Store#fetch` [ci skip]yuuji.yaginuma2016-09-171-3/+3
|/ | | | Single backticks don't work with rdoc.
* Merge pull request #25628 from ysksn/optionsRafael Mendonça França2016-08-171-1/+1
|\ | | | | | | Remove parameter "options = nil" for #clear
| * Update CHANGELOG.md for #25628 [ci skip]Yosuke Kabuto2016-07-021-1/+1
| | | | | | | | | | | | Move new CHANGELOG entry top [ci skip] Remove parameter "options = nil" for #clear
* | Add three new rubocop rulesRafael Mendonça França2016-08-161-4/+4
| | | | | | | | | | | | | | | | Style/SpaceBeforeBlockBraces Style/SpaceInsideBlockBraces Style/SpaceInsideHashLiteralBraces Fix all violations in the repository.
* | modernizes hash syntax in activesupportXavier Noria2016-08-061-3/+3
| |
* | applies new string literal convention in activesupport/libXavier Noria2016-08-061-18/+18
|/ | | | | The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
* Change doc for race_condition_ttl option of ↵Dimitris Zorbas2016-06-061-2/+2
| | | | | | | | | ActiveSupport::Cache::Store#fetch [ci skip] The related option of this method, `expires_in` is documented as expecting an `ActiveSupport::Duration` value. To minimize any sort of ambiguity between duration options, this change also documents `race_condition_ttl` accepting `ActiveSupport::Duration`.
* Merge pull request #24577 from mechanicles/fix-fetch-cache-missJeremy Daer2016-04-181-2/+11
|\ | | | | | | Fix forced cache miss for fetch when called without a block.
| * Fix forced cache miss for fetch.Santosh Wadghule2016-04-181-2/+10
| | | | | | | | | | | | - Raised an argument error if no block is passed to #fetch with 'force: true' option is set. - Added tests for the same.
* | Merge pull request #24587 from mechanicles/doc-consistencyXavier Noria2016-04-181-19/+19
|\ \ | |/ |/| Document consistency [ci skip]
| * Document consistency [ci skip]Santosh Wadghule2016-04-171-19/+19
| |
* | Stop passing unused payloads to instrumentation block in cacheVipul A M2016-04-171-2/+2
|/
* Revert "Instrument read_multi".Kasper Timm Hansen2016-02-201-23/+10
| | | | | | | | | | | | | | | | | | Reevaluating the log output generated from this instrumentation, we've found that it wasn't all that useful in practice. ``` Caches multi read: - views/david/2/4184ab71db6849621a4d8820fcd2c0ad - views/david/2/4184ab71db6849621a4d8820fcd2c0ad - views/david/3/4184ab71db6849621a4d8820fcd2c0ad - views/david/3/4184ab71db6849621a4d8820fcd2c0ad ``` If rendering many templates the output is inscrutable, and it's impossible to see how many cache misses there were. Revert ca6aba7f30 and implement a better way later.
* Merge pull request #22581 from hirocaster/fix-expect-sample-codeYves Senn2015-12-211-4/+5
|\ | | | | | | | | | | [ci skip] Change output timming of sample code
| * Change output timming of sample codehirocaster2015-12-141-2/+2
| | | | | | | | - Expect returns "new value 1" but, retuns nil, because output at thread is not finished. Move val_1 output to finished thread.
* | Fix cache fetch miss notification orderRobin Clowers2015-12-021-8/+8
|/ | | | | | | | Fixes https://github.com/rails/rails/issues/22477. When I improved the caching instrumentation in edd33c08d98723ae9bb89cf7f019277117ed6414, I inadvertently changed the order of AS notifications when there is a cache miss.
* add deprecations for a smooth transition after #22215Michael Grosser2015-11-191-1/+9
|
* keep deprecated namespaced_key in case any subclass uses itMichael Grosser2015-11-101-0/+1
|
* send normalized keys to the cache backends so they do not need to manage ↵Michael Grosser2015-11-101-8/+8
| | | | this themselves
* Merge pull request #11872 from AvnerCohen/log_namespaceSean Griffin2015-10-301-1/+1
|\ | | | | When testing cache issues, it is useful to log the actual key, including namespace
| * When logging Cache key, in debug mode, also log namespace, to create the ↵Avner Cohen2015-06-231-1/+1
| | | | | | | | full key that actually used by the underline cache implementation
* | Fix Cache#fetch instrumentationRobin Clowers2015-09-141-13/+11
| | | | | | | | | | Before this change, you couldn't tell if a read was a hit or not when you called fetch.