-
Notifications
You must be signed in to change notification settings - Fork 4
/
README
70 lines (44 loc) · 1.85 KB
/
README
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
= CachingMailer
Enables the use of fragment caching in ActionMailer views.
Shares the cache configuration of ActionController::Base.
== Resources
* Source: http://github.com/mikedemers/caching-mailer/tree/master
* Support: http://github.com/mikedemers/caching-mailer/issues
== Installation
script/plugin install git://github.com/mikedemers/caching-mailer.git
== Usage
Configure fragment caching in "config/environment.rb" (or in the
configuration file for a specific environment such as
"config/environments/production.rb"):
config.action_controller.perform_caching = true
config.cache_store = :file_store, File.join(Rails.root, 'tmp', 'cache')
For the mailer "app/models/hello_mailer.rb":
class HelloMailer < ActionMailer::Base
include_fragment_caching
def hello
subject "Hello, World"
recipients "[email protected]"
from "[email protected]"
sent_on Time.now
end
end
And the template "app/views/hello_mailer/hello.text.plain.erb":
Hello, World!
This is an computationally expensive list:
<% cache("mail/expensive-list") do %>
<% ExpensiveOperation.results.each do |result| %>
* Item #<%= result.id %>: "<%= result.title %>"
<% end %>
<% end %>
The computationally expensive method `ExpensiveOperation.results` will only
be invoked once. Subsequent emails will use the cached result.
For automatic expiration, try including a time value in the cache key. This
example will generate a new cache entry every 2 hours (removal of stale
entries is left as an exercise to the reader):
<% cache("mail/expensive-list-#{Time.now.to_i / 2.hours.to_i}") do %>
<% ExpensiveOperation.results.each do |result| %>
* Item #<%= result.id %>: "<%= result.title %>"
<% end %>
<% end %>
Copyright (c) 2009 Mike Demers <mike_(at)_9astronauts.com>, released under
the MIT license.