Commit 25b80767bd0b7f715d5e0d77644788e11c3d585c

Authored by RickXing
1 parent 9e5c0168

use resque mailer to send mail background

Gemfile
... ... @@ -36,6 +36,7 @@ gem 'bootstrap-sass', "2.0.2"
36 36 gem "colored"
37 37 gem 'yaml_db', :git => "https://github.com/gitlabhq/yaml_db.git"
38 38 gem 'modularity'
  39 +gem 'resque_mailer'
39 40  
40 41 group :assets do
41 42 gem "sass-rails", "3.2.3"
... ...
Gemfile.lock
... ... @@ -222,6 +222,9 @@ GEM
222 222 redis-namespace (~> 1.0.2)
223 223 sinatra (>= 0.9.2)
224 224 vegas (~> 0.1.2)
  225 + resque_mailer (2.0.3)
  226 + actionmailer (>= 3.0.0)
  227 + resque (>= 1.2.3)
225 228 rspec (2.8.0)
226 229 rspec-core (~> 2.8.0)
227 230 rspec-expectations (~> 2.8.0)
... ... @@ -348,6 +351,7 @@ DEPENDENCIES
348 351 rake
349 352 redcarpet (~> 2.1.1)
350 353 resque (~> 1.20.0)
  354 + resque_mailer
351 355 rspec-rails
352 356 sass-rails (= 3.2.3)
353 357 seed-fu
... ...
app/mailers/notify.rb
1 1 class Notify < ActionMailer::Base
  2 + include Resque::Mailer
2 3 add_template_helper ApplicationHelper
3 4  
4 5 default_url_options[:host] = EMAIL_OPTS["host"]
... ... @@ -9,68 +10,68 @@ class Notify &lt; ActionMailer::Base
9 10 def new_user_email(user, password)
10 11 @user = user
11 12 @password = password
12   - mail(:to => @user.email, :subject => "gitlab | Account was created for you")
  13 + mail(:to => @user['email'], :subject => "gitlab | Account was created for you")
13 14 end
14 15  
15 16 def new_issue_email(issue)
16   - @user = issue.assignee
17   - @project = issue.project
18   - @issue = issue
  17 + @issue = Issue.find(issue['id'])
  18 + @user = @issue.assignee
  19 + @project = @issue.project
19 20  
20 21 mail(:to => @user.email, :subject => "gitlab | New Issue was created")
21 22 end
22 23  
23 24 def note_wall_email(user, note)
24 25 @user = user
25   - @note = note
26   - @project = note.project
27   - mail(:to => @user.email, :subject => "gitlab | #{@note.project.name} ")
  26 + @note = Note.find(note['id'])
  27 + @project = @note.project
  28 + mail(:to => @user['email'], :subject => "gitlab | #{@note.project.name} ")
28 29 end
29 30  
30 31 def note_commit_email(user, note)
31 32 @user = user
32   - @note = note
33   - @project = note.project
  33 + @note = Note.find(note['id'])
  34 + @project = @note.project
34 35 @commit = @note.target
35   - mail(:to => @user.email, :subject => "gitlab | note for commit | #{@note.project.name} ")
  36 + mail(:to => @user['email'], :subject => "gitlab | note for commit | #{@note.project.name} ")
36 37 end
37 38  
38 39 def note_merge_request_email(user, note)
39 40 @user = user
40   - @note = note
41   - @project = note.project
42   - @merge_request = note.noteable
43   - mail(:to => @user.email, :subject => "gitlab | note for merge request | #{@note.project.name} ")
  41 + @note = Note.find(note['id'])
  42 + @project = @note.project
  43 + @merge_request = @note.noteable
  44 + mail(:to => @user['email'], :subject => "gitlab | note for merge request | #{@note.project.name} ")
44 45 end
45 46  
46 47 def note_issue_email(user, note)
47 48 @user = user
48   - @note = note
49   - @project = note.project
50   - @issue = note.noteable
51   - mail(:to => @user.email, :subject => "gitlab | note for issue #{@issue.id} | #{@note.project.name} ")
  49 + @note = Note.find(note['id'])
  50 + @project = @note.project
  51 + @issue = @note.noteable
  52 + mail(:to => @user['email'], :subject => "gitlab | note for issue #{@issue.id} | #{@note.project.name} ")
52 53 end
53 54  
54 55 def new_merge_request_email(merge_request)
55   - @user = merge_request.assignee
56   - @merge_request = merge_request
57   - @project = merge_request.project
  56 + @merge_request = MergeRequest.find(merge_request['id'])
  57 + @user = @merge_request.assignee
  58 + @project = @merge_request.project
58 59 mail(:to => @user.email, :subject => "gitlab | new merge request | #{@merge_request.title} ")
59 60 end
60 61  
61 62 def changed_merge_request_email(user, merge_request)
62 63 @user = user
63   - @assignee_was ||= User.find(merge_request.assignee_id_was)
64   - @merge_request = merge_request
65   - @project = merge_request.project
66   - mail(:to => @user.email, :subject => "gitlab | merge request changed | #{@merge_request.title} ")
  64 + @merge_request = MergeRequest(merge_request.id)
  65 + @assignee_was ||= User.find(@merge_request.assignee_id_was)
  66 + @project = @merge_request.project
  67 + mail(:to => @user['email'], :subject => "gitlab | merge request changed | #{@merge_request.title} ")
67 68 end
68 69  
69 70 def changed_issue_email(user, issue)
  71 + @issue = Issue.find(issue['id'])
70 72 @user = user
71   - @assignee_was ||= User.find(issue.assignee_id_was)
72   - @issue = issue
73   - @project = issue.project
74   - mail(:to => @user.email, :subject => "gitlab | changed issue | #{@issue.title} ")
  73 + @assignee_was ||= User.find(@issue.assignee_id_was)
  74 + @project = @issue.project
  75 + mail(:to => @user['email'], :subject => "gitlab | changed issue | #{@issue.title} ")
75 76 end
76 77 end
... ...
app/views/notify/new_user_email.html.haml
... ... @@ -4,7 +4,7 @@
4 4 %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
5 5 %td{:align => "left", :style => "padding: 20px 0 0;"}
6 6 %h2{:style => "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "}
7   - Hi #{@user.name}!
  7 + Hi #{@user['name']}!
8 8 %p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "}
9 9 Administrator created account for you. Now you are a member of company gitlab application.
10 10 %td{:style => "font-size: 1px; line-height: 1px;", :width => "21"}
... ... @@ -13,7 +13,7 @@
13 13 %td{:style => "padding: 15px 0 15px;", :valign => "top"}
14 14 %p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 28px; font-size: 16px;font-family: Helvetica, Arial, sans-serif; "}
15 15 login..........................................
16   - %code= @user.email
  16 + %code= @user['email']
17 17 %p{:style => "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 28px; font-size: 16px;font-family: Helvetica, Arial, sans-serif; "}
18 18 password..................................
19 19 %code= @password
... ...
resque.sh
1 1 mkdir -p tmp/pids
2   -bundle exec rake environment resque:work QUEUE=post_receive RAILS_ENV=production PIDFILE=tmp/pids/resque_worker.pid BACKGROUND=yes
  2 +bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production PIDFILE=tmp/pids/resque_worker.pid BACKGROUND=yes
... ...