From d793bdc3c745e26f4b1b212280521c901ea58e01 Mon Sep 17 00:00:00 2001 From: zhitomirskiyi <ilya@joindiaspora.com> Date: Thu, 4 Nov 2010 12:04:07 -0700 Subject: [PATCH] inital commit for mailqueue --- app/mailers/notifier.rb | 10 ++++++++++ lib/diaspora/user/friending.rb | 4 ++-- script/mail_worker.rb | 2 ++ script/server | 1 + script/websocket_server.rb | 3 ++- spec/models/user/friending_spec.rb | 7 +++---- spec/spec_helper.rb | 3 +++ 7 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 script/mail_worker.rb diff --git a/app/mailers/notifier.rb b/app/mailers/notifier.rb index 36047d0593..e5a2b2c3de 100644 --- a/app/mailers/notifier.rb +++ b/app/mailers/notifier.rb @@ -5,6 +5,7 @@ class Notifier < ActionMailer::Base ATTACHMENT = File.read("#{Rails.root}/public/images/diaspora_white_on_grey.png") def new_request(recipient, sender) + puts "I'm in new request" @receiver = recipient @sender = sender attachments.inline['diaspora_white_on_grey.png'] = ATTACHMENT @@ -22,4 +23,13 @@ class Notifier < ActionMailer::Base mail(:to => "#{recipient.real_name} <#{recipient.email}>", :subject => "#{@sender.real_name} has accepted your friend request on Diaspora*", :host => APP_CONFIG[:terse_pod_url]) end + + + def self.send_request_accepted!(user, person, aspect) + Notifier.async.request_accepted(user, person, aspect ).deliver.commit! + end + + def self.send_new_request!(user, person) + Notifier.async.new_request(user, person).deliver.commit! + end end diff --git a/lib/diaspora/user/friending.rb b/lib/diaspora/user/friending.rb index adddc1381b..8561462d3e 100644 --- a/lib/diaspora/user/friending.rb +++ b/lib/diaspora/user/friending.rb @@ -67,7 +67,7 @@ module Diaspora Rails.logger.info("#{self.real_name}'s friend request has been accepted") friend_request.destroy original_request.destroy - Notifier.request_accepted(self, friend_request.person, destination_aspect) + Notifier.send_request_accepted!(self, friend_request.person, destination_aspect) #this is a new friend request elsif !request_from_me?(friend_request) @@ -75,7 +75,7 @@ module Diaspora self.save Rails.logger.info("#{self.real_name} has received a friend request") friend_request.save - Notifier.new_request(self, friend_request.person).deliver + Notifier.send_new_request!(self, friend_request.person) else raise "#{self.real_name} is trying to receive a friend request from himself." end diff --git a/script/mail_worker.rb b/script/mail_worker.rb new file mode 100644 index 0000000000..cd1c388737 --- /dev/null +++ b/script/mail_worker.rb @@ -0,0 +1,2 @@ +require File.dirname(__FILE__) + '/../config/environment' +Magent::Processor.new(Magent::AsyncChannel.new(:default)).run! diff --git a/script/server b/script/server index 5ace36a610..fd6ea24482 100755 --- a/script/server +++ b/script/server @@ -50,4 +50,5 @@ fi mkdir -p -v log/thin/ bundle exec ruby ./script/websocket_server.rb& +bundle exec ruby ./script/mail_worker.rb& bundle exec thin start $args diff --git a/script/websocket_server.rb b/script/websocket_server.rb index 2b308832b6..518a548722 100644 --- a/script/websocket_server.rb +++ b/script/websocket_server.rb @@ -39,11 +39,12 @@ def process_message else EM::Timer.new(1){process_message} end - end begin EM.run { + + Diaspora::WebSocket.initialize_channels EventMachine::WebSocket.start( diff --git a/spec/models/user/friending_spec.rb b/spec/models/user/friending_spec.rb index e6c8ada994..a1850cab6a 100644 --- a/spec/models/user/friending_spec.rb +++ b/spec/models/user/friending_spec.rb @@ -18,6 +18,7 @@ describe Diaspora::UserModules::Friending do let(:user2) { make_user } let(:aspect2) { user2.aspects.create(:name => "aspect two") } + context 'friend requesting' do it "should assign a request to a aspect for the user that sent it out" do aspect.requests.size.should == 0 @@ -87,7 +88,7 @@ describe Diaspora::UserModules::Friending do end it 'should send an email on acceptance if a friend request' do - Notifier.should_receive(:request_accepted) + Notifier.should_receive(:send_request_accepted!) request = user.send_friend_request_to(user2.person, aspect) user.receive_friend_request(request.reverse_for(user2)) end @@ -133,9 +134,7 @@ describe Diaspora::UserModules::Friending do end it 'sends an email to the receiving user' do - mail_obj = mock("mailer") - mail_obj.should_receive(:deliver) - Notifier.should_receive(:new_request).and_return(mail_obj) + Notifier.should_receive(:send_new_request!).and_return(true) user.receive @req_xml, person_one end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0c582b65f1..43ffa2304f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -33,6 +33,9 @@ RSpec.configure do |config| EventMachine::HttpRequest.any_instance.stubs(:get) DatabaseCleaner.clean UserFixer.load_user_fixtures + Notifier.stub!(:send_request_accepted!).and_return(true) + Notifier.stub!(:send_new_request!).and_return(true) + end end -- GitLab