- Your contribution here.
- Fixed #81:
Garner.cache
loses namespace options when calling delete when cache block yieldsnil
- @dblock. - Upgraded RSpec to 3.x and RuboCop to 0.27.1 - @dblock.
- #70: Added a
whiny_nils
configuration variable (default:true
) which determines whether Garner raises exceptions onnil
bindings - @fancyremarker. - #72: Fix: ActiveRecord 4 support,
cache_key
is now in:nsec
format - @dblock. - #74: Removed Jeweler, rewritten .gemspec - @dblock.
- #76: Added Rubocop, Ruby-style linter - @dblock.
- #77: Running tests on Ruby 2.0, 2.1.2, Rubinius and JRuby - @dblock.
- Fixed #62: fix garnered_find in
Garner::Mixins::Mongoid::Document.garnered_find
to support finding multiple objects, matching Mongoid's find - @mzikherman. - Fixed #60: don't return cache keys for Mongoid::Document#identify(nil) - @fancyremarker.
- Fixed #47: use a database index when generating proxy binding in
Garner::Mixins::Mongoid::Identity
with multipleGarner.config.mongoid_identity_fields
- @dblock.
- Stored
ruby_context
from which aGarner::Cache::Identity
was initialized as anattr_accessor
on the object - @fancyremarker. - Fixed
cache_enabled?
logic and added anocache
declaration toGarner::Cache::Identity
- @fancyremarker. - Fixed #44, in which the BindingIndex was mistakenly storing values to cache for bindings with a nil canonical binding - @fancyremarker.
- Added
Garner.config.invalidate_mongoid_root
option, to always invalidate the root document when an embedded document is invalidated - @fancyremarker.
- Fixed
Caller
strategy when using Rails - @fancyremarker.
- Added a
rake benchmark
task to compare different binding key/invalidation strategy pairs - @fancyremarker. - Improved the performance of the
SafeCacheKey
strategy on virtualGarner::Mixins::Mongoid::Identity
bindings by properly memoizing the corresponding document - @fancyremarker. - Improved the performance of the
SafeCacheKey
strategy on class bindings by making 1 database call per key application, instead of 3 - @fancyremarker. - Removed the
Garner.config.mongoid_binding_key_strategy
andGarner.config.mongoid_invalidation_key_strategy
. Garner now uses just one default key/invalidation strategy pair for all binding types - @fancyremarker. - Added an ActiveRecord mixin,
Garner::Mixins::ActiveRecord::Base
, per #35 - @fancyremarker. - Eliminated the need to
require "garner/mixins/rack"
before declaringGarner.config.rack_context_key_strategies
, per #35 - @fancyremarker. - Fixed a bug in binding to classes via the
SafeCacheKey
andTouch
strategy pair, where class-bound results would not be invalidated when an instance of the class was destroyed - @fancyremarker. - Added
BindingIndex
binding key/invalidation strategy pair, which uses a two-level lookup for computing cache keys - @fancyremarker.
- Complete rewrite of Garner. See UPGRADING for details on how to upgrade from Garner 0.3.3 and earlier versions - @fancyremarker.
- Fixed #6: Garner fails if Mongoid not loaded yet - @fancyremarker.
- Closed #12: Support arrays in
Garner.config.mongoid_identity_fields
- @fancyremarker. - Closed #13: Replace faulty multiple-identity logic- @fancyremarker.
- Fixed #14: Disambiguate binding models by
:id
and:slug
- @fancyremarker. - Fixed #15: Remove need for
cache_as
from subclassed Mongoid models - @fancyremarker. - Closed #23: Abstract all Grape mixins to be more generically Rack mixins - @fancyremarker.
- Closed #24: Implement
garnered_find
method forMongoid::Document
classes - @fancyremarker. - Extracted
Binding
,Context
andIdentity
as explicit classes fromObjectIdentity
- @fancyremarker. - Added support for all ActiveModel-compliant ORMs - @fancyremarker.
- Removed HTTP caching responsibilities from the library entirely - @fancyremarker.
- Introduced a
SafeCacheKey
binding key strategy, which appends subsecond precision to cache keys, to make them usable - @fancyremarker. - Added a
cache_key
implementation at the class level in Mongoid, which returns thecache_key
of the most recently updated document in the collection (by:updated_at
) - @fancyremarker. - Fixed #29: Restrict the filename string used for the
Caller
context key strategy to just the portion of the path relevant to the current app. In a Rails app, this defaults to Rails.root; otherwise we search for the nearest ancestor directory containing a Gemfile - @fancyremarker.
- Fix: parent documents are properly invalidated on creation of an embedded document - @fancyremarker.
- Fix: calling
invalidate
on an embedded document in anembeds_many
relationship - @fancyremarker. Garner::Strategies::Keys::Caller
no longer depends on ActiveSupport - @oripekelman, @dblock.- Added
Garner::Strategies::Keys::RequestPost
for POST parameters - @oripekelman.
- Do not attempt to fetch again objects in
Garner::Cache::ObjectIdentity.cache_multi
after they were not retrieved fromread_multi
, write them directly to cache - @dblock.
- Added
Garner::Cache::ObjectIdentity.cache_multi
that can now take an array of bindings to return an array of objects - @dblock. - When fetching an array of objects via
Garner::Cache::ObjectIdentity.cache_multi
, Garner will useread_multi
if provided by the cache store - @dblock.
- Faster invalidation on Mongoid model creation, only invalidate class - @dblock.
- Invalidate cache after a Mongoid model has been updated or destroyed, not before - @dblock.
- The
Keys::Caller
strategy now allows specifying the caller explicitly by passing a:caller
as part of the context - @fancyremarker. - Fix:
invalidate
no longer writes a new index key for each object binding; instead it only deletes existing index keys - @fancyremarker. - Fix: Invoking Garner helper methods from within an IRB session no longer crashes inside the
Keys::Caller
strategy - @fancyremarker.
- Split
Garner::Objects::ETag
into a configurableGarner::Strategies::ETags
module, makingGarner::Strategies::ETags::GrapeETag
the new default, for better integration with Grape - @fancyremarker. - Added
Garner::Strategies::Keys::Key
, that inserts the value of:key
within the requested context, useful to explicitly declare an element of a cache key - @dblock. - Fix:
Garner::Strategies::Keys::Caller
excludes lines withlib/garner
, workaround for Heroku - @dblock. - Only load Grape and Mongoid mixins when necessary - @billgloff.
- Fix: Grape API version is properly passed through to key context when using
Garner::Strategies::Keys::Version
- @fancyremarker. - Added support for caching responses to JSONP requests, via
Garner::Strategies::Keys::Jsonp
- @fancyremarker.
- Fix:
Garner::Mixins::Grape::Cache
improperly handlesnil
cache hits orcache_enabled?
returningfalse
incache_or_304
- @dblock.
- Initial public release at GoRuCo, read the announcement.
- Grape mixin takes a single parameter, binding and context are extracted from it - @dblock.
- Initial implementation based on @fancyremarker's original code.
- Rack middleware for cache busting,
Garner::Middleware::Cache::Bust
- @dblock. - Generating ETags,
Garner::Objects::ETag
- @dblock. Garner::Cache::ObjectIdentity
cache - @dblock.Version
,Caller
,RequestPath
andRequestGet
key generation strategies - @dblock.Expiration
cache strategy - @dblock.- Grape and Mongoid mixins - @dblock.