aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/cache.rb
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* | Correct cache store superclass in commentJonah Burke2015-08-191-1/+1
|/
* Skip the `:race_condition_ttl` branch if the option is 0 or nil. This fixes ↵Matt Wilde2015-03-111-2/+2
| | | | an issue with the redis cache, where this code will sometimes throw an error out of SETEX when passing 0 as the `expires_at`.
* Doc fix [ci skip]Sushruth Sivaramakrishnan2015-03-051-1/+1
|
* fixes documentation for returned hash in cache.fetch_multiMichael Raidel2015-03-041-2/+5
|
* Instrument read_multi.Kasper Timm Hansen2015-02-211-13/+27
| | | | | | | | | | Adds `read_multi` instrumentation formatted as: Caches multi read: - views/david/2/4184ab71db6849621a4d8820fcd2c0ad - views/david/2/4184ab71db6849621a4d8820fcd2c0ad - views/david/3/4184ab71db6849621a4d8820fcd2c0ad - views/david/3/4184ab71db6849621a4d8820fcd2c0ad
* Remove deprecated ActiveSupport::Cache::Store.instrumentRafael Mendonça França2015-01-041-13/+0
|
* Remove conversion code for old Rails cache entryRafael Mendonça França2015-01-011-24/+0
| | | | | | | | | This code was there just to convert entries generated in Rails 4.0.0.beta1 applications to a supported format. It is almost unlikely that any existent application have this cache entry format in their caches at the point that Rails 5 will be released so we don't need this code anymore.
* Check by @v before converting the entry on expired?Rafael Mendonça França2015-01-011-1/+1
| | | | | | | We should convert when @v is defined not @value. The test was calling value first that already converts the entry so we are not catching this bug.
* Docs: grammar fix for fetch. [ci skip]Mike Coutermarsh2014-08-081-1/+1
|
* Merge pull request #15943 from wagenet/cache-instrumentationRafael Mendonça França2014-06-271-11/+10
|\ | | | | | | Always instrument ActiveSupport::Cache
| * Always instrument ActiveSupport::CachePeter Wagenet2014-06-271-11/+10
|/ | | | | | | | The current approach is broken because it uses a thread local value which means on multi-threaded environments it has to be turned on per thread. Secondly, ActiveSupport::Notifications does not instrument items when there are not subscribers so this flag is unnecessary.
* Return a hash rather than array from fetch_multiParker Selbert2014-02-261-6/+5
| | | | | | | The current implementation of `fetch_multi` returns an array and has no means to easily backtrack which names yielded which results. By changing the return value to a Hash we retain the name information. Hash#values can be used on the response if only the values are needed.
* docs, be clear that `options` is a hash. Closes #11904. [ci skip].Yves Senn2014-02-031-1/+1
|
* Merge branch 'master' of github.com:lifo/docrailsVijay Dev2013-12-201-1/+1
|\