posten 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +64 -1
- data/lib/posten/version.rb +1 -1
- data/lib/posten.rb +11 -0
- data/makefile +1 -1
- data/posten.gemspec +1 -0
- data/test/defaults.rb +15 -0
- data/test/deliver.rb +37 -0
- data/test/helper.rb +3 -0
- data/test/mails/mail.mote +1 -0
- data/test/render.rb +12 -0
- data/test/sandbox.rb +21 -0
- data/test/settings.rb +20 -0
- metadata +23 -3
- data/test/posten_test.rb +0 -98
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e09e2ebeb4aa81ad15f50d02cb2b734a2dd493c
|
4
|
+
data.tar.gz: 44b8f2ff496751fbdd11e76f7b3d67c9196cb602
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b83ca4a6a9b10de1478323ea7c4ea38f4e81988753c625545fbd658fdfe513583f04adbe02d8c6b2efd9ba60a6d5dc8ac3692fb93872b7422bad9694c106c33
|
7
|
+
data.tar.gz: eb541fd35b96c673d259b02601ddd390a8fa4f9c9acb5ed72c1c1fbd6106b8e81643cb1adf89e03cd491e07d1458742dc20c268d11e1aace435601ad1897ee7c
|
data/README.md
CHANGED
@@ -68,7 +68,7 @@ You can use inheritance to create mailer classes:
|
|
68
68
|
|
69
69
|
```ruby
|
70
70
|
class UserMailer < Posten
|
71
|
-
defaults from: "
|
71
|
+
defaults from: "team@posten.gem"
|
72
72
|
|
73
73
|
def welcome_mail(user)
|
74
74
|
deliver(
|
@@ -85,6 +85,65 @@ mailer.welcome_mail(User.first)
|
|
85
85
|
|
86
86
|
Defaults are inherited but can be changed through the `defaults` method.
|
87
87
|
|
88
|
+
Templates
|
89
|
+
---------
|
90
|
+
|
91
|
+
You can render templates using the `render` method. It uses the template
|
92
|
+
engine [Mote][mote].
|
93
|
+
|
94
|
+
```ruby
|
95
|
+
class UserMailer < Posten
|
96
|
+
defaults from: "team@posten.gem"
|
97
|
+
|
98
|
+
def welcome_email(user)
|
99
|
+
deliver(
|
100
|
+
to: user.email,
|
101
|
+
subject: "Welcome #{ user.name }!",
|
102
|
+
text: render("welcome.txt", user: user),
|
103
|
+
html: render("welcome.html", user: user)
|
104
|
+
)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
```
|
108
|
+
|
109
|
+
By default, it assumes that all mail templates are placed in a folder named
|
110
|
+
`mails` and that they use the `.mote` extension:
|
111
|
+
|
112
|
+
```
|
113
|
+
# mails/welcome.txt.mote
|
114
|
+
Welcome {{ user.name }}!
|
115
|
+
|
116
|
+
# mails/welcome.html.mote
|
117
|
+
<b>Welcome {{ user.name }}!</b>
|
118
|
+
```
|
119
|
+
|
120
|
+
Check [Mote's GitHub repository][mote] for more information.
|
121
|
+
|
122
|
+
Helpers
|
123
|
+
-------
|
124
|
+
|
125
|
+
Included helper modules are available inside the template through the `app`
|
126
|
+
variable.
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
module TextHelper
|
130
|
+
def titleize(str)
|
131
|
+
return str.gsub(/\w+/) { |x| x.capitalize }
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
class UserMailer < Posten
|
136
|
+
include TextHelper
|
137
|
+
|
138
|
+
defaults from: "team@posten.gem"
|
139
|
+
|
140
|
+
# ...
|
141
|
+
end
|
142
|
+
|
143
|
+
# mails/welcome.txt.mote
|
144
|
+
welcome {{ app.titleize(user.name) }}!
|
145
|
+
```
|
146
|
+
|
88
147
|
Testing
|
89
148
|
-------
|
90
149
|
|
@@ -92,8 +151,11 @@ If you don't want to call the actual delivery method in your tests, you
|
|
92
151
|
can use `posten/test`:
|
93
152
|
|
94
153
|
```ruby
|
154
|
+
require "posten"
|
95
155
|
require "posten/test"
|
96
156
|
|
157
|
+
Posten.connect({ ... })
|
158
|
+
|
97
159
|
posten = Posten.new
|
98
160
|
posten.deliver(to: "alice@posten.gem", subject: "hei")
|
99
161
|
|
@@ -180,3 +242,4 @@ $ gem install posten
|
|
180
242
|
```
|
181
243
|
|
182
244
|
[cutest]: https://github.com/djanowski/cutest
|
245
|
+
[mote]: https://github.com/soveran/mote
|
data/lib/posten/version.rb
CHANGED
data/lib/posten.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require "malone"
|
2
|
+
require "mote"
|
2
3
|
require "seteable"
|
3
4
|
require_relative "posten/version"
|
4
5
|
|
5
6
|
class Posten
|
7
|
+
include Mote::Helpers
|
6
8
|
include Seteable
|
7
9
|
|
8
10
|
def self.connect(options)
|
@@ -32,6 +34,15 @@ class Posten
|
|
32
34
|
def defaults
|
33
35
|
return settings[:defaults]
|
34
36
|
end
|
37
|
+
|
38
|
+
def render(template, params = {})
|
39
|
+
return mote(view_path(template), params.merge(app: self), TOPLEVEL_BINDING)
|
40
|
+
end
|
41
|
+
|
42
|
+
private def view_path(template)
|
43
|
+
return File.join(settings[:views], "#{ template }.mote")
|
44
|
+
end
|
35
45
|
end
|
36
46
|
|
37
47
|
Posten.settings[:defaults] = {}
|
48
|
+
Posten.settings[:views] = File.expand_path("mails", Dir.pwd)
|
data/makefile
CHANGED
data/posten.gemspec
CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.files = `git ls-files`.split("\n")
|
14
14
|
|
15
15
|
s.add_dependency "malone", "~> 1.1.0"
|
16
|
+
s.add_dependency "mote", "~> 1.1.4"
|
16
17
|
s.add_dependency "seteable", "1.0.0"
|
17
18
|
s.add_development_dependency "bundler", "~> 1.10"
|
18
19
|
s.add_development_dependency "cutest", "~> 1.2"
|
data/test/defaults.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
test "defaults" do
|
2
|
+
Posten.defaults(from: "bob@posten.gem")
|
3
|
+
|
4
|
+
class EveMailer < Posten
|
5
|
+
defaults to: "eve@posten.gem"
|
6
|
+
end
|
7
|
+
|
8
|
+
params = { from: "bob@posten.gem" }
|
9
|
+
|
10
|
+
assert_equal params, Posten.settings[:defaults]
|
11
|
+
|
12
|
+
params = params.merge(to: "eve@posten.gem")
|
13
|
+
|
14
|
+
assert_equal params, EveMailer.settings[:defaults]
|
15
|
+
end
|
data/test/deliver.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require "malone/test"
|
2
|
+
|
3
|
+
setup do
|
4
|
+
Malone.deliveries.clear
|
5
|
+
|
6
|
+
Posten.connect(url: "smtp://foo%40bar.com:pass1234@smtp.gmail.com:587")
|
7
|
+
end
|
8
|
+
|
9
|
+
test "deliver use defaults" do
|
10
|
+
defaults = { from: "bob@posten.gem", to: "eve@posten.gem" }
|
11
|
+
|
12
|
+
Posten.defaults(defaults)
|
13
|
+
|
14
|
+
params = {
|
15
|
+
subject: "subject",
|
16
|
+
text: "text",
|
17
|
+
html: "<html></html>"
|
18
|
+
}
|
19
|
+
|
20
|
+
Posten.new.deliver(params)
|
21
|
+
|
22
|
+
options = Malone.deliveries.last.to_h
|
23
|
+
|
24
|
+
assert_equal options, defaults.merge(params)
|
25
|
+
|
26
|
+
class Mailer < Posten
|
27
|
+
defaults to: "alice@posten.gem"
|
28
|
+
end
|
29
|
+
|
30
|
+
Mailer.new.deliver(params)
|
31
|
+
|
32
|
+
defaults = defaults.merge(to: "alice@posten.gem")
|
33
|
+
|
34
|
+
options = Malone.deliveries.last.to_h
|
35
|
+
|
36
|
+
assert_equal options, defaults.merge(params)
|
37
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{{ message }}
|
data/test/render.rb
ADDED
data/test/sandbox.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "../lib/posten/test"
|
2
|
+
|
3
|
+
test "sandbox" do
|
4
|
+
Posten.connect({})
|
5
|
+
|
6
|
+
defaults = { from: "bob@posten.gem", to: "eve@posten.gem" }
|
7
|
+
|
8
|
+
Posten.defaults(defaults)
|
9
|
+
|
10
|
+
params = {
|
11
|
+
subject: "subject",
|
12
|
+
text: "text",
|
13
|
+
html: "<html></html>"
|
14
|
+
}
|
15
|
+
|
16
|
+
Posten.new.deliver(params)
|
17
|
+
|
18
|
+
mail = Posten.deliveries.first
|
19
|
+
|
20
|
+
assert_equal defaults.merge(params), mail.to_h
|
21
|
+
end
|
data/test/settings.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
test "raise if not smtp settings" do
|
2
|
+
Posten.settings.delete(:smtp)
|
3
|
+
|
4
|
+
assert_raise do
|
5
|
+
Posten.new
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
test "settings" do
|
10
|
+
Posten.settings[:foo] = "foo"
|
11
|
+
|
12
|
+
Notifier = Class.new(Posten)
|
13
|
+
|
14
|
+
assert_equal "foo", Notifier.settings[:foo]
|
15
|
+
|
16
|
+
Notifier.settings[:foo] = "bar"
|
17
|
+
|
18
|
+
assert_equal "foo", Posten.settings[:foo]
|
19
|
+
assert_equal "bar", Notifier.settings[:foo]
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: posten
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Rodríguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: malone
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mote
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.4
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.4
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: seteable
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +96,13 @@ files:
|
|
82
96
|
- lib/posten/version.rb
|
83
97
|
- makefile
|
84
98
|
- posten.gemspec
|
85
|
-
- test/
|
99
|
+
- test/defaults.rb
|
100
|
+
- test/deliver.rb
|
101
|
+
- test/helper.rb
|
102
|
+
- test/mails/mail.mote
|
103
|
+
- test/render.rb
|
104
|
+
- test/sandbox.rb
|
105
|
+
- test/settings.rb
|
86
106
|
homepage: https://github.com/harmoni/posten
|
87
107
|
licenses:
|
88
108
|
- MIT
|
data/test/posten_test.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
require "bundler/setup"
|
2
|
-
require "cutest"
|
3
|
-
require_relative "../lib/posten"
|
4
|
-
|
5
|
-
require "malone/test"
|
6
|
-
|
7
|
-
setup do
|
8
|
-
Malone.deliveries.clear
|
9
|
-
|
10
|
-
Posten.connect(url: "smtp://foo%40bar.com:pass1234@smtp.gmail.com:587")
|
11
|
-
end
|
12
|
-
|
13
|
-
test "raise if not smtp settings" do
|
14
|
-
Posten.settings.delete(:smtp)
|
15
|
-
|
16
|
-
assert_raise do
|
17
|
-
Posten.new
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
test "settings" do
|
22
|
-
Posten.settings[:foo] = "foo"
|
23
|
-
|
24
|
-
Notifier = Class.new(Posten)
|
25
|
-
|
26
|
-
assert_equal "foo", Notifier.settings[:foo]
|
27
|
-
|
28
|
-
Notifier.settings[:foo] = "bar"
|
29
|
-
|
30
|
-
assert_equal "foo", Posten.settings[:foo]
|
31
|
-
assert_equal "bar", Notifier.settings[:foo]
|
32
|
-
end
|
33
|
-
|
34
|
-
test "defaults" do
|
35
|
-
Posten.defaults(from: "bob@posten.gem")
|
36
|
-
|
37
|
-
class EveMailer < Posten
|
38
|
-
defaults to: "eve@posten.gem"
|
39
|
-
end
|
40
|
-
|
41
|
-
params = { from: "bob@posten.gem" }
|
42
|
-
|
43
|
-
assert_equal params, Posten.settings[:defaults]
|
44
|
-
|
45
|
-
params = params.merge(to: "eve@posten.gem")
|
46
|
-
|
47
|
-
assert_equal params, EveMailer.settings[:defaults]
|
48
|
-
end
|
49
|
-
|
50
|
-
test "deliver use defaults" do
|
51
|
-
defaults = { from: "bob@posten.gem", to: "eve@posten.gem" }
|
52
|
-
|
53
|
-
Posten.defaults(defaults)
|
54
|
-
|
55
|
-
params = {
|
56
|
-
subject: "subject",
|
57
|
-
text: "text",
|
58
|
-
html: "<html></html>"
|
59
|
-
}
|
60
|
-
|
61
|
-
Posten.new.deliver(params)
|
62
|
-
|
63
|
-
options = Malone.deliveries.last.to_h
|
64
|
-
|
65
|
-
assert_equal options, defaults.merge(params)
|
66
|
-
|
67
|
-
class Mailer < Posten
|
68
|
-
defaults to: "alice@posten.gem"
|
69
|
-
end
|
70
|
-
|
71
|
-
Mailer.new.deliver(params)
|
72
|
-
|
73
|
-
defaults = defaults.merge(to: "alice@posten.gem")
|
74
|
-
|
75
|
-
options = Malone.deliveries.last.to_h
|
76
|
-
|
77
|
-
assert_equal options, defaults.merge(params)
|
78
|
-
end
|
79
|
-
|
80
|
-
test "testing" do
|
81
|
-
require_relative "../lib/posten/test"
|
82
|
-
|
83
|
-
defaults = { from: "bob@posten.gem", to: "eve@posten.gem" }
|
84
|
-
|
85
|
-
Posten.defaults(defaults)
|
86
|
-
|
87
|
-
params = {
|
88
|
-
subject: "subject",
|
89
|
-
text: "text",
|
90
|
-
html: "<html></html>"
|
91
|
-
}
|
92
|
-
|
93
|
-
Posten.new.deliver(params)
|
94
|
-
|
95
|
-
mail = Posten.deliveries.first
|
96
|
-
|
97
|
-
assert_equal defaults.merge(params), mail.to_h
|
98
|
-
end
|