task_mailer.rb
1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class TaskMailer < ActionMailer::Base
def method_missing(name, *args)
task = args.shift
if task.kind_of?(Task) && task.respond_to?("#{name}_message")
send_message(task, task.send("#{name}_message"), *args)
else
super
end
end
def target_notification(task, message)
msg = extract_message(message)
recipients task.target.contact_email
from task.requestor.environment.contact_email
subject task.description
body :requestor => task.requestor.name,
:target => task.target.name,
:message => msg,
:environment => task.requestor.environment.name,
:url => url_for(:host => task.requestor.environment.default_hostname, :controller => 'home')
end
protected
def extract_message(message)
if message.kind_of?(Proc)
self.instance_eval(&message)
else
message.to_s
end
end
def send_message(task, message)
text = extract_message(message)
recipients task.requestor.email
from task.requestor.environment.contact_email
subject task.description
body :requestor => task.requestor.name,
:message => text,
:environment => task.requestor.environment.name,
:url => url_for(:host => task.requestor.environment.default_hostname, :controller => 'home')
end
end