diff options
Diffstat (limited to 'content/posts/testing-rails-cache')
-rw-r--r-- | content/posts/testing-rails-cache/index.org | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/content/posts/testing-rails-cache/index.org b/content/posts/testing-rails-cache/index.org new file mode 100644 index 0000000..266a900 --- /dev/null +++ b/content/posts/testing-rails-cache/index.org @@ -0,0 +1,33 @@ +#+TITLE: Testing Rails Components That Require Cache +#+DATE: 2023-04-28T00:14:14-04:00 +#+DRAFT: false +#+DESCRIPTION: How to test rails components that require cache without caching everything +#+TAGS[]: ruby rails cache +#+KEYWORDS[]: ruby rails cache +#+SLUG: +#+SUMMARY: + +If you're in the default testing environment your rails cache is +=ActiveSupport::Cache::NullStore= which will always succeed but it +doesn't actually store or return anything. + +There's an almost completely undocumented function called +=with_local_cache= that gets implemented on =NullStore= that lets +you run a block with a =MemoryStore= instead of a =NullStore=. This +happens because it =prepends= the +=ActiveSupport::Cache::Strategy::LocalCache= class. + +#+begin_src ruby + Rails.cache.class.name + # => "ActiveSupport::Cache::NullStore" + Rails.cache.write("a", 3) + # => true + Rails.cache.read("a") + # => nil + Rails.cache.with_local_cache do + Rails.cache.write("a", 5) + p Rails.cache.read("a") + end + 5 + # => 5 +#+end_src |