about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-03-26 13:42:10 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-03-26 13:42:10 +0100
commit85b00d19b840bae98322c2372e8e0e3ebd66f2e0 (patch)
tree7eee05cd92cdcc0b97a07d2a94f8ee661f6eaca7 /app
parentda4b675aca2c68e976d7920d3fc5b7e2881d1d86 (diff)
Moving Salmon notifications to background processing, fixing mini-profiler
behaviour with Turbolinks enabled, optimizing Rabl for production
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/profiler.coffee7
-rw-r--r--app/controllers/auth/registrations_controller.rb2
-rw-r--r--app/models/status.rb2
-rw-r--r--app/services/favourite_service.rb8
-rw-r--r--app/services/follow_service.rb6
-rw-r--r--app/services/process_mentions_service.rb6
-rw-r--r--app/services/reblog_service.rb8
-rw-r--r--app/services/unfollow_service.rb8
-rw-r--r--app/workers/notification_worker.rb7
9 files changed, 20 insertions, 34 deletions
diff --git a/app/assets/javascripts/profiler.coffee b/app/assets/javascripts/profiler.coffee
index bcdcc1e59..40dfd0af6 100644
--- a/app/assets/javascripts/profiler.coffee
+++ b/app/assets/javascripts/profiler.coffee
@@ -1,2 +1,5 @@
-$(document).on 'turbolinks:load', ->
-  window.MiniProfiler.pageTransition() unless typeof window.MiniProfiler == 'undefined'
+$ ->
+  $(document).on 'turbolinks:load', ->
+    unless typeof window.MiniProfiler == 'undefined'
+      window.MiniProfiler.init()
+      window.MiniProfiler.pageTransition()
diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb
index 5e1f5214b..ad0fd4437 100644
--- a/app/controllers/auth/registrations_controller.rb
+++ b/app/controllers/auth/registrations_controller.rb
@@ -16,7 +16,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
     end
   end
 
-  def after_sign_up_path_for(resource)
+  def after_sign_up_path_for(_resource)
     root_path
   end
 end
diff --git a/app/models/status.rb b/app/models/status.rb
index 439cd3053..7ea92df2c 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -17,7 +17,7 @@ class Status < ActiveRecord::Base
   validates :text, presence: true, if: Proc.new { |s| s.local? && !s.reblog? }
 
   scope :with_counters, -> { select('statuses.*, (select count(r.id) from statuses as r where r.reblog_of_id = statuses.id) as reblogs_count, (select count(f.id) from favourites as f where f.status_id = statuses.id) as favourites_count') }
-  scope :with_includes, -> { includes(:account, :mentions, :stream_entry, reblog: [:account, :mentions], thread: [:account, :mentions]) }
+  scope :with_includes, -> { includes(:account, :mentions, :stream_entry, reblog: [:account, :mentions], thread: :account) }
 
   def local?
     self.uri.nil?
diff --git a/app/services/favourite_service.rb b/app/services/favourite_service.rb
index 4a8ecfacb..3d0bc718c 100644
--- a/app/services/favourite_service.rb
+++ b/app/services/favourite_service.rb
@@ -10,15 +10,9 @@ class FavouriteService < BaseService
     if status.local?
       NotificationMailer.favourite(status, account).deliver_later
     else
-      send_interaction_service.(favourite.stream_entry, status.account)
+      NotificationWorker.perform_async(favourite.stream_entry.id, status.account_id)
     end
 
     favourite
   end
-
-  private
-
-  def send_interaction_service
-    @send_interaction_service ||= SendInteractionService.new
-  end
 end
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 0661c63f7..06bbfa8f0 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -8,7 +8,7 @@ class FollowService < BaseService
     return nil if target_account.nil?
 
     follow = source_account.follow!(target_account)
-    send_interaction_service.(follow.stream_entry, target_account)
+    NotificationWorker.perform_async(follow.stream_entry.id, target_account.id)
     source_account.ping!(account_url(source_account, format: 'atom'), [Rails.configuration.x.hub_url])
     follow
   end
@@ -18,8 +18,4 @@ class FollowService < BaseService
   def follow_remote_account_service
     @follow_remote_account_service ||= FollowRemoteAccountService.new
   end
-
-  def send_interaction_service
-    @send_interaction_service ||= SendInteractionService.new
-  end
 end
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index ba9486c1f..aec150a94 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -24,7 +24,7 @@ class ProcessMentionsService < BaseService
       if mentioned_account.local?
         NotificationMailer.mention(mentioned_account, status).deliver_later
       else
-        send_interaction_service.(status.stream_entry, mentioned_account)
+        NotificationWorker.perform_async(status.stream_entry.id, mentioned_account.id)
       end
     end
   end
@@ -34,8 +34,4 @@ class ProcessMentionsService < BaseService
   def follow_remote_account_service
     @follow_remote_account_service ||= FollowRemoteAccountService.new
   end
-
-  def send_interaction_service
-    @send_interaction_service ||= SendInteractionService.new
-  end
 end
diff --git a/app/services/reblog_service.rb b/app/services/reblog_service.rb
index 606970e23..f149477c7 100644
--- a/app/services/reblog_service.rb
+++ b/app/services/reblog_service.rb
@@ -5,13 +5,13 @@ class ReblogService < BaseService
   # @return [Status]
   def call(account, reblogged_status)
     reblog = account.statuses.create!(reblog: reblogged_status, text: '')
-    fan_out_on_write_service.(reblog)
+    DistributionWorker.perform_async(reblog.id)
     account.ping!(account_url(account, format: 'atom'), [Rails.configuration.x.hub_url])
 
     if reblogged_status.local?
       NotificationMailer.reblog(reblogged_status, account).deliver_later
     else
-      send_interaction_service.(reblog.stream_entry, reblogged_status.account)
+      NotificationWorker.perform_async(reblog.stream_entry.id, reblogged_status.account_id)
     end
 
     reblog
@@ -22,8 +22,4 @@ class ReblogService < BaseService
   def send_interaction_service
     @send_interaction_service ||= SendInteractionService.new
   end
-
-  def fan_out_on_write_service
-    @fan_out_on_write_service ||= FanOutOnWriteService.new
-  end
 end
diff --git a/app/services/unfollow_service.rb b/app/services/unfollow_service.rb
index 039838d32..92d86a2c5 100644
--- a/app/services/unfollow_service.rb
+++ b/app/services/unfollow_service.rb
@@ -4,12 +4,6 @@ class UnfollowService < BaseService
   # @param [Account] target_account Which to unfollow
   def call(source_account, target_account)
     follow = source_account.unfollow!(target_account)
-    send_interaction_service.(follow.stream_entry, target_account) unless target_account.local?
-  end
-
-  private
-
-  def send_interaction_service
-    @send_interaction_service ||= SendInteractionService.new
+    NotificationWorker.perform_async(follow.stream_entry.id, target_account.id) unless target_account.local?
   end
 end
diff --git a/app/workers/notification_worker.rb b/app/workers/notification_worker.rb
new file mode 100644
index 000000000..129512a5a
--- /dev/null
+++ b/app/workers/notification_worker.rb
@@ -0,0 +1,7 @@
+class NotificationWorker
+  include Sidekiq::Worker
+
+  def perform(stream_entry_id, target_account_id)
+    SendInteractionService.new.(StreamEntry.find(stream_entry_id), Account.find(target_account_id))
+  end
+end