Commit Graph

66 Commits

Author SHA1 Message Date
Santiago Pastorino
f802eb2f00 require conversions to use String#ord 2010-06-12 18:47:37 -07:00
Santiago Pastorino
57144388f0 Unforce memcache from AS
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-06-01 10:46:05 +02:00
José Valim
1b816d5024 The rake task :environment now loads config/environment.rb instead of initializing the application on its own. This fixes [#4492 state:resolved] and also avoids the application being initialized twice in some rake tasks. 2010-04-29 08:39:52 +02:00
Jeremy Kemper
4e75cc59e7 object_id may be negative, producing an invalid symbol. h/t Markus Schirp 2010-04-28 15:20:35 -07:00
Brian Durand
ee51b51b60 ActiveSupport::Cache refactoring
All Caches

* Add default options to initializer that will be sent to all read, write, fetch, exist?, increment, and decrement
* Add support for the :expires_in option to fetch and write for all caches. Cache entries are stored with the create timestamp and a ttl so that expiration can be handled independently of the implementation.
* Add support for a :namespace option. This can be used to set a global prefix for cache entries.
* Deprecate expand_cache_key on ActiveSupport::Cache and move it to ActionController::Caching and ActionDispatch::Http::Cache since the logic in the method used some Rails specific environment variables and was only used by ActionPack classes. Not very DRY but there didn't seem to be a good shared spot and ActiveSupport really shouldn't be Rails specific.
* Add support for :race_condition_ttl to fetch. This setting can prevent race conditions on fetch calls where several processes try to regenerate a recently expired entry at once.
* Add support for :compress option to fetch and write which will compress any data over a configurable threshold.
* Nil values can now be stored in the cache and are distinct from cache misses for fetch.
* Easier API to create new implementations. Just need to implement the methods read_entry, write_entry, and delete_entry instead of overwriting existing methods.
* Since all cache implementations support storing objects, update the docs to state that ActiveCache::Cache::Store implementations should store objects. Keys, however, must be strings since some implementations require that.
* Increase test coverage.
* Document methods which are provided as convenience but which may not be universally available.

MemoryStore

* MemoryStore can now safely be used as the cache for single server sites.
* Make thread safe so that the default cache implementation used by Rails is thread safe. The overhead is minimal and it is still the fastest store available.
* Provide :size initialization option indicating the maximum size of the cache in memory (defaults to 32Mb).
* Add prune logic that removes the least recently used cache entries to keep the cache size from exceeding the max.
* Deprecated SynchronizedMemoryStore since it isn't needed anymore.

FileStore

* Escape key values so they will work as file names on all file systems, be consistent, and case sensitive
* Use a hash algorithm to segment the cache into sub directories so that a large cache doesn't exceed file system limits.
* FileStore can be slow so implement the LocalCache strategy to cache reads for the duration of a request.
* Add cleanup method to keep the disk from filling up with expired entries.
* Fix increment and decrement to use file system locks so they are consistent between processes.

MemCacheStore

* Support all keys. Previously keys with spaces in them would fail
* Deprecate CompressedMemCacheStore since it isn't needed anymore (use :compress => true)

[#4452 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-04-27 11:13:37 -07:00
Jeremy Kemper
03aa7877f7 MemoryStore#read_multi(*keys) for dev-mode compatibility with memcache store 2010-04-19 00:19:10 -07:00
Santiago Pastorino
c09744bec9 Fixed method sign error
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-04-09 23:05:26 +02:00
Santiago Pastorino
13e00ce606 fix stack trace lines on class_eval
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-04-09 21:28:49 +02:00
Joshua Peek
eed89e65b6 Make sure MemCacheStore logger exists 2010-04-07 15:08:23 -05:00
Vladimir Andrijevik
edaf92f5ab Drop expires argument from call to @data in MemCacheStore so it works with memcache-client and memcached gems, as advertised [#3672 state:resolved]
Signed-off-by: wycats <wycats@gmail.com>
2010-03-28 13:57:14 -07:00
Xavier Noria
abae712213 fixes a couple of wrong requires 2010-01-01 14:28:57 -08:00
Xavier Noria
13168e6594 requires active_support/inflector/methods active_support/core_ext/string/inflections in local_cache.rb because it uses underscore 2010-01-01 14:28:55 -08:00
Xavier Noria
f1e34cc41d requires active_support/core_ext/array/extract_options in mem_cache_store.rb because it uses extract_options! 2010-01-01 14:28:55 -08:00
Xavier Noria
7f7f5d619a requires active_support/gzip in CompressedMemCacheStore because it uses ActiveSupport::Gzip 2010-01-01 14:28:55 -08:00
David Vrensk
af44b07649 Rdoc for changes introduced in e2ed1a1ca, 36058f450.
[#3451 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-11-12 11:21:44 -08:00
José Valim
af0d1fa892 Update Orchestra instrumentations and move part of logging to Orchestra. 2009-10-15 18:18:44 -03:00
Pratik Naik
987d501182 Mute log info coming from the local_cache strategy 2009-10-09 15:03:18 +01:00
Jeremy Kemper
0bd6e933c0 Restore split between require-time and runtime load path mungery. Simplifies vendor requires. 2009-09-24 18:38:18 -07:00
José Valim
4215e9ab93 Instrumenting cache stores. 2009-09-20 12:07:21 -03:00
Joshua Peek
b2f0b8cbda Rollback AS bundler work and improve activation of vendored dependencies 2009-09-13 22:55:46 -05:00
Pratik Naik
e033b5d037 Merge docrails 2009-07-25 16:03:58 +01:00
Yehuda Katz + Carl Lerche
1026d7706f Original cache objects should not be immutable [#2860 state:resolved]
Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
2009-07-01 12:16:55 -07:00
Pratik Naik
b5775c2b3e Add expiry support File cache store [#1693 state:resolved] [Roman Shterenzon, Pratik Naik] 2009-06-21 15:25:28 +01:00
Joshua Peek
6ef329d325 Ensure Memcache local cache returns duplicated values [#2302 state:resolved] 2009-05-27 14:54:58 -05:00
Bryan Helmkamp
36058f4504 Use duck typing to also allow MemCache-like object when initializing a MemCacheStore
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-05-19 16:58:04 -07:00
Bryan Helmkamp
e2ed1a1ca4 Allow MemCacheStore to be initialized with a MemCache object instead of addresses and options 2009-05-19 10:54:56 -07:00
Joe Van Dyk
29550cc91f Add ability to get multiple memcached keys at the same time (via MemCacheStore#read_multi).
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2009-05-18 13:43:56 -07:00
Jeremy Kemper
f28bd9557c Fix dependencies revealed by testing in isolation 2009-04-22 18:54:13 -07:00
Jeremy Kemper
685a53a360 Merge branch 'master' into cherry
Conflicts:
	activesupport/CHANGELOG
	activesupport/lib/active_support/core_ext/class/delegating_attributes.rb
	activesupport/lib/active_support/core_ext/hash/conversions.rb
	activesupport/lib/active_support/core_ext/module/attribute_accessors.rb
	activesupport/lib/active_support/core_ext/string/multibyte.rb
	activesupport/lib/active_support/core_ext/time/calculations.rb
	activesupport/lib/active_support/deprecation.rb
2009-04-20 18:31:40 -07:00
Jeremy Kemper
595e03336f Remove rarely-used DRb cache store 2009-04-17 21:53:17 -07:00
Joshua Peek
0e9efae474 Nicer name for anonymous local cache middleware class 2009-04-02 12:05:21 -05:00
Jeremy Kemper
36e934a5ce Fix require 2009-03-29 00:10:32 -07:00
Jeremy Kemper
db214a1b5a Explicit File#atomic_write dependency 2009-03-29 00:08:22 -07:00
Joshua Peek
2e69db18ce Only dup local cache values if duplicable [#1653 state:resolved] 2009-01-28 21:20:46 -06:00
Lourens Naude
b08c968875 Decouple the local cache strategy from MemCacheStore for reuse with other remote stores [#1653 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-01-17 18:05:48 -06:00
Nahum Wild
a53ad5bba3 Added in a local per request cache to MemCacheStore. It acts as a buffer to stop unneccessary requests being sent through to memcache [#1653 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-01-15 21:29:32 -06:00
Jeremy Kemper
283418a785 Lazy-require DRb for ActiveSupport::Cache::DRbStore 2008-11-23 15:30:21 -08:00
Pratik Naik
b047929c14 Merge with docrails 2008-11-02 04:02:40 +05:30
Doug Barth
4b63c2700f Bring MemCacheStore and CompressedMemCacheStore inline with expected counter manipulation semantics.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
2008-10-17 18:09:27 +02:00
Doug Barth
c3d6205a4b Fix cache counter semantics for MemoryCache, FileStoreCache, and (presumably) the DRbStore.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
2008-10-17 18:09:26 +02:00
Joshua Peek
2ba9ca95f9 Removed monitor from MemoryStore and created a seperate threadsafe store called SynchronizedMemoryStore 2008-09-10 18:56:03 -05:00
Jeremy Kemper
1b94d5dc65 Fix indentation mismatch 2008-09-08 18:10:23 -07:00
Joshua Peek
5de340e79f Ensure objects cached with MemoryStore are immutable 2008-08-19 19:20:10 -05:00
Joshua Peek
c1a8690d58 Consistently use the framework's configured logger and avoid reverting to RAILS_DEFAULT_LOGGER unless necessary. 2008-08-18 23:36:13 -05:00
Joshua Peek
a4da8175a2 Replace MemoryStore mutex with a monitor to avoid issues with nested calls 2008-08-18 20:17:08 -05:00
Joshua Peek
b8b30985d5 Marshal FileStore values 2008-08-13 20:57:26 -05:00
Jeffrey Hardy
282b420213 Account for the possibility of a nil options argument to CompressedMemCacheStore#read/#write 2008-08-13 04:19:31 -07:00
Joshua Peek
c6b7d0f344 Ensure file atomic write uses the cache directory as its tmp folder 2008-08-06 17:25:32 -05:00
Joshua Peek
fbc6129acd Treat single C operations in MemoryStore as atomic 2008-08-06 17:03:42 -05:00
Joshua Peek
dfc83566b3 Make FileStore use atomic writes 2008-08-06 14:54:18 -05:00