diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index cf88a2a72..a3c32e85f 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -25,11 +25,14 @@ class SavedSearch < ApplicationRecord extend Memoist def redis + return nil if Danbooru.config.redis_url.blank? ::Redis.new(url: Danbooru.config.redis_url) end memoize :redis def post_ids_for(user_id, label: nil) + return [] if redis.nil? + queries = queries_for(user_id, label: label) post_ids = Set.new queries.each do |query| @@ -46,6 +49,8 @@ class SavedSearch < ApplicationRecord end def refreshed_at + return Time.zone.now if SavedSearch.redis.nil? + ttl = SavedSearch.redis.ttl("search:#{normalized_query}") return nil if ttl < 0 (REDIS_EXPIRY.to_i - ttl).seconds.ago @@ -53,6 +58,8 @@ class SavedSearch < ApplicationRecord memoize :refreshed_at def cached_size + return 0 if SavedSearch.redis.nil? + SavedSearch.redis.scard("search:#{normalized_query}") end memoize :cached_size @@ -116,6 +123,8 @@ class SavedSearch < ApplicationRecord end def populate(query, timeout: 10_000) + return if redis.nil? + redis_key = "search:#{query}" return if redis.exists?(redis_key) diff --git a/config/initializers/cache_store.rb b/config/initializers/cache_store.rb index 33dedc81d..f8a75a04c 100644 --- a/config/initializers/cache_store.rb +++ b/config/initializers/cache_store.rb @@ -1,5 +1,5 @@ Rails.application.configure do - if Rails.env.test? || Danbooru.config.redis_url.blank? + if Danbooru.config.redis_url.blank? cache_config = [:memory_store, { size: 32.megabytes }] else cache_config = [ diff --git a/test/unit/post_query_builder_test.rb b/test/unit/post_query_builder_test.rb index be21a855c..f6ea43beb 100644 --- a/test/unit/post_query_builder_test.rb +++ b/test/unit/post_query_builder_test.rb @@ -801,6 +801,7 @@ class PostQueryBuilderTest < ActiveSupport::TestCase create(:saved_search, query: "aaa", labels: ["zzz"], user: CurrentUser.user) create(:saved_search, query: "bbb", user: CurrentUser.user) + Danbooru.config.stubs(:redis_url).returns("redis://localhost:6379") Redis.any_instance.stubs(:exists?).with("search:aaa").returns(true) Redis.any_instance.stubs(:exists?).with("search:bbb").returns(true) Redis.any_instance.stubs(:smembers).with("search:aaa").returns([@post1.id])