about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorysksn <bluewhale1982@gmail.com>2019-02-03 03:11:38 +0900
committerEugen Rochko <eugen@zeonfederated.com>2019-02-02 19:11:38 +0100
commitbcfff65195f557dc086470f91b4c90b15c004cf7 (patch)
treecdf805998758278b41cd8ab0cc8dd864d8047c57 /app
parent6a5e3da6b044e50635d293c2716883cc5627e4c8 (diff)
Create Redisable#redis (#9633)
* Create Redisable

* Use #redis instead of Redis.current
Diffstat (limited to 'app')
-rw-r--r--app/lib/activity_tracker.rb6
-rw-r--r--app/lib/activitypub/activity.rb5
-rw-r--r--app/lib/feed_manager.rb9
-rw-r--r--app/lib/ostatus/activity/base.rb6
-rw-r--r--app/lib/potential_friendship_tracker.rb8
-rw-r--r--app/models/concerns/redisable.rb11
-rw-r--r--app/models/feed.rb6
-rw-r--r--app/models/trending_tags.rb6
-rw-r--r--app/services/batched_remove_status_service.rb5
-rw-r--r--app/services/follow_service.rb6
-rw-r--r--app/services/post_status_service.rb6
-rw-r--r--app/services/remove_status_service.rb19
-rw-r--r--app/workers/scheduler/feed_cleanup_scheduler.rb5
13 files changed, 39 insertions, 59 deletions
diff --git a/app/lib/activity_tracker.rb b/app/lib/activity_tracker.rb
index 5b4972674..ae3c11b6a 100644
--- a/app/lib/activity_tracker.rb
+++ b/app/lib/activity_tracker.rb
@@ -4,6 +4,8 @@ class ActivityTracker
   EXPIRE_AFTER = 90.days.seconds
 
   class << self
+    include Redisable
+
     def increment(prefix)
       key = [prefix, current_week].join(':')
 
@@ -20,10 +22,6 @@ class ActivityTracker
 
     private
 
-    def redis
-      Redis.current
-    end
-
     def current_week
       Time.zone.today.cweek
     end
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 87318fb1c..919678618 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -2,6 +2,7 @@
 
 class ActivityPub::Activity
   include JsonLdHelper
+  include Redisable
 
   def initialize(json, account, **options)
     @json    = json
@@ -70,10 +71,6 @@ class ActivityPub::Activity
     @object_uri ||= value_or_id(@object)
   end
 
-  def redis
-    Redis.current
-  end
-
   def distribute(status)
     crawl_links(status)
 
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index f99df33e5..d77cdb3a3 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -4,6 +4,7 @@ require 'singleton'
 
 class FeedManager
   include Singleton
+  include Redisable
 
   MAX_ITEMS = 400
 
@@ -35,7 +36,7 @@ class FeedManager
 
   def unpush_from_home(account, status)
     return false unless remove_from_feed(:home, account.id, status)
-    Redis.current.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s))
+    redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s))
     true
   end
 
@@ -53,7 +54,7 @@ class FeedManager
 
   def unpush_from_list(list, status)
     return false unless remove_from_feed(:list, list.id, status)
-    Redis.current.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s))
+    redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s))
     true
   end
 
@@ -142,10 +143,6 @@ class FeedManager
 
   private
 
-  def redis
-    Redis.current
-  end
-
   def push_update_required?(timeline_id)
     redis.exists("subscribed:#{timeline_id}")
   end
diff --git a/app/lib/ostatus/activity/base.rb b/app/lib/ostatus/activity/base.rb
index c5933f3ad..db70f1998 100644
--- a/app/lib/ostatus/activity/base.rb
+++ b/app/lib/ostatus/activity/base.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class OStatus::Activity::Base
+  include Redisable
+
   def initialize(xml, account = nil, **options)
     @xml     = xml
     @account = account
@@ -66,8 +68,4 @@ class OStatus::Activity::Base
       Status.find_by(uri: uri)
     end
   end
-
-  def redis
-    Redis.current
-  end
 end
diff --git a/app/lib/potential_friendship_tracker.rb b/app/lib/potential_friendship_tracker.rb
index 017a9748d..188aa4a27 100644
--- a/app/lib/potential_friendship_tracker.rb
+++ b/app/lib/potential_friendship_tracker.rb
@@ -11,6 +11,8 @@ class PotentialFriendshipTracker
   }.freeze
 
   class << self
+    include Redisable
+
     def record(account_id, target_account_id, action)
       return if account_id == target_account_id
 
@@ -31,11 +33,5 @@ class PotentialFriendshipTracker
       return [] if account_ids.empty?
       Account.searchable.where(id: account_ids)
     end
-
-    private
-
-    def redis
-      Redis.current
-    end
   end
 end
diff --git a/app/models/concerns/redisable.rb b/app/models/concerns/redisable.rb
new file mode 100644
index 000000000..c6cf97359
--- /dev/null
+++ b/app/models/concerns/redisable.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Redisable
+  extend ActiveSupport::Concern
+
+  private
+
+  def redis
+    Redis.current
+  end
+end
diff --git a/app/models/feed.rb b/app/models/feed.rb
index 5bce88f25..0e8943ff8 100644
--- a/app/models/feed.rb
+++ b/app/models/feed.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class Feed
+  include Redisable
+
   def initialize(type, id)
     @type = type
     @id   = id
@@ -27,8 +29,4 @@ class Feed
   def key
     FeedManager.instance.key(@type, @id)
   end
-
-  def redis
-    Redis.current
-  end
 end
diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb
index 3a8be2164..148535c21 100644
--- a/app/models/trending_tags.rb
+++ b/app/models/trending_tags.rb
@@ -7,6 +7,8 @@ class TrendingTags
   THRESHOLD            = 5
 
   class << self
+    include Redisable
+
     def record_use!(tag, account, at_time = Time.now.utc)
       return if disallowed_hashtags.include?(tag.name) || account.silenced? || account.bot?
 
@@ -59,9 +61,5 @@ class TrendingTags
       @disallowed_hashtags = @disallowed_hashtags.split(' ') if @disallowed_hashtags.is_a? String
       @disallowed_hashtags = @disallowed_hashtags.map(&:downcase)
     end
-
-    def redis
-      Redis.current
-    end
   end
 end
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index 2e61904fc..cd3b14e08 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -2,6 +2,7 @@
 
 class BatchedRemoveStatusService < BaseService
   include StreamEntryRenderer
+  include Redisable
 
   # Delete given statuses and reblogs of them
   # Dispatch PuSH updates of the deleted statuses, but only local ones
@@ -109,10 +110,6 @@ class BatchedRemoveStatusService < BaseService
     end
   end
 
-  def redis
-    Redis.current
-  end
-
   def build_xml(stream_entry)
     return @activity_xml[stream_entry.id] if @activity_xml.key?(stream_entry.id)
 
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 9d36a1449..92d8c864a 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class FollowService < BaseService
+  include Redisable
+
   # Follow a remote user, notify remote user about the follow
   # @param [Account] source_account From which to follow
   # @param [String, Account] uri User URI to follow in the form of username@domain (or account record)
@@ -67,10 +69,6 @@ class FollowService < BaseService
     follow
   end
 
-  def redis
-    Redis.current
-  end
-
   def build_follow_request_xml(follow_request)
     OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.follow_request_salmon(follow_request))
   end
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 9959bb1fb..686b10c58 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class PostStatusService < BaseService
+  include Redisable
+
   MIN_SCHEDULE_OFFSET = 5.minutes.freeze
 
   # Post a text status update, fetch and notify remote users mentioned
@@ -110,10 +112,6 @@ class PostStatusService < BaseService
     ProcessHashtagsService.new
   end
 
-  def redis
-    Redis.current
-  end
-
   def scheduled?
     @scheduled_at.present?
   end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 11d28e783..28c5224b0 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -2,6 +2,7 @@
 
 class RemoveStatusService < BaseService
   include StreamEntryRenderer
+  include Redisable
 
   def call(status, **options)
     @payload      = Oj.dump(event: :delete, payload: status.id.to_s)
@@ -55,7 +56,7 @@ class RemoveStatusService < BaseService
 
   def remove_from_affected
     @mentions.map(&:account).select(&:local?).each do |account|
-      Redis.current.publish("timeline:#{account.id}", @payload)
+      redis.publish("timeline:#{account.id}", @payload)
     end
   end
 
@@ -133,26 +134,22 @@ class RemoveStatusService < BaseService
     return unless @status.public_visibility?
 
     @tags.each do |hashtag|
-      Redis.current.publish("timeline:hashtag:#{hashtag}", @payload)
-      Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local?
+      redis.publish("timeline:hashtag:#{hashtag}", @payload)
+      redis.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local?
     end
   end
 
   def remove_from_public
     return unless @status.public_visibility?
 
-    Redis.current.publish('timeline:public', @payload)
-    Redis.current.publish('timeline:public:local', @payload) if @status.local?
+    redis.publish('timeline:public', @payload)
+    redis.publish('timeline:public:local', @payload) if @status.local?
   end
 
   def remove_from_media
     return unless @status.public_visibility?
 
-    Redis.current.publish('timeline:public:media', @payload)
-    Redis.current.publish('timeline:public:local:media', @payload) if @status.local?
-  end
-
-  def redis
-    Redis.current
+    redis.publish('timeline:public:media', @payload)
+    redis.publish('timeline:public:local:media', @payload) if @status.local?
   end
 end
diff --git a/app/workers/scheduler/feed_cleanup_scheduler.rb b/app/workers/scheduler/feed_cleanup_scheduler.rb
index cd2273418..bf5e20757 100644
--- a/app/workers/scheduler/feed_cleanup_scheduler.rb
+++ b/app/workers/scheduler/feed_cleanup_scheduler.rb
@@ -2,6 +2,7 @@
 
 class Scheduler::FeedCleanupScheduler
   include Sidekiq::Worker
+  include Redisable
 
   sidekiq_options unique: :until_executed, retry: 0
 
@@ -57,8 +58,4 @@ class Scheduler::FeedCleanupScheduler
   def feed_manager
     FeedManager.instance
   end
-
-  def redis
-    Redis.current
-  end
 end