summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorysksn <bluewhale1982@gmail.com>2019-02-03 03:11:38 +0900
committerEugen Rochko <eugen@zeonfederated.com>2019-02-17 19:42:14 +0100
commit737ac4b59df77e43bed71abc6de80bc89f893de1 (patch)
treed312fb754ed830b2de595905a5e6287f96555d55
parent17a41e1f779874a270f531086f5576affcdb6cb1 (diff)
Create Redisable#redis (#9633)
* Create Redisable * Use #redis instead of Redis.current
-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 5b497267477..ae3c11b6af5 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 87318fb1c5c..919678618a3 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 f99df33e54f..d77cdb3a3cc 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 c5933f3adfe..db70f19980c 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 017a9748d5f..188aa4a2756 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 00000000000..c6cf9735960
--- /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 5bce88f2552..0e8943ff863 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 3a8be21649b..148535c2121 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 2e61904fc77..cd3b14e08e3 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 9d36a1449df..92d8c864a7d 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 9959bb1fbf7..686b10c5817 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 11d28e783d0..28c5224b011 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 cd227341805..bf5e2075700 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