Module: FactoryGirlCache
- Defined in:
- lib/factory_girl-cache/cache.rb,
lib/factory_girl-cache/version.rb
Overview
A wrapper for FactoryGirl that caches the build, build_list, build_stubbed, create, and create_list methods using the method (as symbol) and arguments as the key for the cache. You can send in a :cached_as option and it will use that in place of the factory name/1st argument in the key of the cache.
Constant Summary collapse
- VERSION =
'0.3.0'
Class Attribute Summary collapse
-
.factory_girl_cache ⇒ Object
Returns the value of attribute factory_girl_cache.
Class Method Summary collapse
Class Attribute Details
.factory_girl_cache ⇒ Object
Returns the value of attribute factory_girl_cache.
8 9 10 |
# File 'lib/factory_girl-cache/cache.rb', line 8 def factory_girl_cache @factory_girl_cache end |
Class Method Details
.clear ⇒ Object
28 29 30 |
# File 'lib/factory_girl-cache/cache.rb', line 28 def clear @factory_girl_cache = {} end |
.method_missing(m, *args, &block) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/factory_girl-cache/cache.rb', line 10 def method_missing(m, *args, &block) if [:build, :build_list, :build_stubbed, :create, :create_list].include?(m) keys = args.dup = args.last cache_key = .is_a?(Hash) ? .delete(:cache_key) : nil unless cache_key cached_as = .is_a?(Hash) ? .delete(:cached_as) : nil keys[0] = cached_as if !(cached_as.nil?) && keys.size > 0 # avoid issues with different object_id's on option hashes etc. being considered new arguments cache_key = [m, *keys].inspect.to_sym end @factory_girl_cache ||= {} @factory_girl_cache[cache_key] ||= FactoryGirl.__send__(m, *args, &block) else FactoryGirl.__send__(m, *args, &block) end end |