From dbe00a4156952cf0288828435ccda6bbba5d7a6f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Nov 2016 23:20:52 +0100 Subject: [PATCH] Improved configuration from ENV, cleaned up timeline filter methods to be more readable, add extra logging to process feed service --- app/lib/feed_manager.rb | 22 +++++++++++++++++----- app/services/process_feed_service.rb | 1 + config/environments/production.rb | 4 ++-- config/initializers/neography.rb | 4 ++-- config/initializers/ostatus.rb | 6 ++++-- config/initializers/redis.rb | 6 +++++- config/initializers/sidekiq.rb | 4 ++-- 7 files changed, 33 insertions(+), 14 deletions(-) diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 86f41cfe9..6a4f0edd6 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -12,8 +12,10 @@ class FeedManager def filter?(timeline_type, status, receiver) if timeline_type == :home filter_from_home?(status, receiver) - else + elsif timeline_type == :mentions filter_from_mentions?(status, receiver) + else + false end end @@ -59,13 +61,23 @@ class FeedManager $redis end - # Filter status out of the home feed if it is a reply to someone the user doesn't follow def filter_from_home?(status, receiver) - replied_to_user = status.reply? ? status.thread.try(:account) : nil - (status.reply? && !(receiver.id == replied_to_user.id || replied_to_user.id == status.account_id || receiver.following?(replied_to_user))) || (status.reblog? && receiver.blocking?(status.reblog.account)) + should_filter = false + + if status.reply? && !status.thread.account.nil? # Filter out if it's a reply + should_filter = !receiver.following?(status.thread.account) # and I'm not following the person it's a reply to + should_filter = should_filter && !(receiver.id == status.thread.account_id) # and it's not a reply to me + should_filter = should_filter && !(status.account_id == status.thread.account_id) # and it's not a self-reply + elsif status.reblog? # Filter out a reblog + should_filter = receiver.blocking?(status.reblog.account) # if I'm blocking the reblogged person + end + + should_filter end def filter_from_mentions?(status, receiver) - receiver.blocking?(status.account) + should_filter = false + should_filter = receiver.blocking?(status.account) # Filter if it's from someone I blocked + should_filter end end diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb index e60284d8e..e1125cf05 100644 --- a/app/services/process_feed_service.rb +++ b/app/services/process_feed_service.rb @@ -56,6 +56,7 @@ class ProcessFeedService < BaseService process_attachments(entry, status) process_attachments(entry.xpath('./activity:object', activity: ACTIVITY_NS), status.reblog) if status.reblog? + Rails.logger.debug "Queuing remote status #{status.id} for distribution" DistributionWorker.perform_async(status.id) return status end diff --git a/config/environments/production.rb b/config/environments/production.rb index f2071f7a2..27238e3d8 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -46,8 +46,8 @@ Rails.application.configure do # Use a different cache store in production. config.cache_store = :redis_store, { - host: ENV['REDIS_HOST'] || 'localhost', - port: ENV['REDIS_PORT'] || 6379, + host: ENV.fetch('REDIS_HOST') { 'localhost' }, + port: ENV.fetch('REDIS_PORT') { 6379 }, db: 0, namespace: 'cache' } diff --git a/config/initializers/neography.rb b/config/initializers/neography.rb index 25d54658b..bd6ead3b0 100644 --- a/config/initializers/neography.rb +++ b/config/initializers/neography.rb @@ -1,5 +1,5 @@ Neography.configure do |config| config.protocol = "http" - config.server = ENV['NEO4J_HOST'] || 'localhost' - config.port = ENV['NEO4J_PORT'] || 7474 + config.server = ENV.fetch('NEO4J_HOST') { 'localhost' } + config.port = ENV.fetch('NEO4J_PORT') { 7474 } end diff --git a/config/initializers/ostatus.rb b/config/initializers/ostatus.rb index 383253cd4..3dd501b65 100644 --- a/config/initializers/ostatus.rb +++ b/config/initializers/ostatus.rb @@ -1,6 +1,8 @@ +port = ENV.fetch('PORT') { 3000 } + Rails.application.configure do - config.x.local_domain = ENV['LOCAL_DOMAIN'] || "localhost:#{ENV['PORT'] || 3000}" - config.x.hub_url = ENV['HUB_URL'] || 'https://pubsubhubbub.superfeedr.com' + config.x.local_domain = ENV.fetch('LOCAL_DOMAIN') { "localhost:#{port}" } + config.x.hub_url = ENV.fetch('HUB_URL') { 'https://pubsubhubbub.superfeedr.com' } config.x.use_https = ENV['LOCAL_HTTPS'] == 'true' config.x.use_s3 = ENV['S3_ENABLED'] == 'true' diff --git a/config/initializers/redis.rb b/config/initializers/redis.rb index a4e4cfc48..4fe33811f 100644 --- a/config/initializers/redis.rb +++ b/config/initializers/redis.rb @@ -1 +1,5 @@ -$redis = Redis.new(host: ENV['REDIS_HOST'] || 'localhost', port: ENV['REDIS_PORT'] || 6379, driver: :hiredis) +$redis = Redis.new({ + host: ENV.fetch('REDIS_HOST') { 'localhost' }, + port: ENV.fetch('REDIS_PORT') { 6379 }, + driver: :hiredis +}) diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 153173974..63fdb3f16 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -1,5 +1,5 @@ -host = ENV['REDIS_HOST'] || 'localhost' -port = ENV['REDIS_PORT'] || 6379 +host = ENV.fetch('REDIS_HOST') { 'localhost' } +port = ENV.fetch('REDIS_PORT') { 6379 } Sidekiq.configure_server do |config| config.redis = { host: host, port: port }