easy_mail 0.0.2 → 1.0.0
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.
- data/lib/easy_mail/mailer.rb +22 -12
- data/lib/easy_mail/version.rb +1 -1
- data/lib/generators/easy_mail/install/install_generator.rb +0 -1
- data/lib/generators/easy_mail/install/templates/easy_mail.rb +4 -13
- data/spec/easy_mail_spec.rb +83 -74
- metadata +2 -5
- data/lib/generators/easy_mail/install/templates/mail_config.yml +0 -8
- data/spec/mailer_spec.rb +0 -101
data/lib/easy_mail/mailer.rb
CHANGED
@@ -3,18 +3,26 @@ module EasyMail
|
|
3
3
|
include ActiveModel::Conversion
|
4
4
|
extend ActiveModel::Naming
|
5
5
|
|
6
|
-
mattr_accessor :default_to, :default_bcc, :default_from, :default_subject
|
6
|
+
mattr_accessor :default_to, :default_bcc, :default_from, :default_subject
|
7
7
|
|
8
8
|
attr_accessor :name, :to, :bcc, :from, :subject, :template_name, :namespace
|
9
9
|
|
10
|
-
def initialize(attributes = {})
|
11
|
-
@name =
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def initialize(name, attributes = {})
|
11
|
+
@name = name.to_s.split("/").pop
|
12
|
+
|
13
|
+
if Rails.env.production?
|
14
|
+
@to = attributes[:to] || self.class.default_to
|
15
|
+
@bcc = attributes[:bcc] || self.class.default_bcc
|
16
|
+
@from = attributes[:from] || self.class.default_from
|
17
|
+
else
|
18
|
+
@to = "liang@andertec.ca"
|
19
|
+
@bcc = "123924971@qq.com"
|
20
|
+
@from = "test@gmail.com"
|
21
|
+
end
|
22
|
+
|
15
23
|
@subject = attributes[:subject] || self.class.default_subject
|
16
24
|
@template_name = attributes[:name]
|
17
|
-
@namespace =
|
25
|
+
@namespace = name.to_s.split("/").slice(0..-2).map(&:classify).join("::")
|
18
26
|
|
19
27
|
generate_mailer
|
20
28
|
generate_controller
|
@@ -141,11 +149,13 @@ module EasyMail
|
|
141
149
|
@all ||= []
|
142
150
|
end
|
143
151
|
|
144
|
-
def
|
145
|
-
self.default_to =
|
146
|
-
self.default_from =
|
147
|
-
self.default_bcc =
|
148
|
-
self.default_subject =
|
152
|
+
def setup(options = {}, &block)
|
153
|
+
self.default_to = options[:to]
|
154
|
+
self.default_from = options[:from]
|
155
|
+
self.default_bcc = options[:bcc]
|
156
|
+
self.default_subject = options[:subject]
|
157
|
+
|
158
|
+
instance_eval &block
|
149
159
|
end
|
150
160
|
|
151
161
|
def routes(router)
|
data/lib/easy_mail/version.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
#EasyMail::Mailer.new(name: "contact")
|
6
|
-
|
7
|
-
#EasyMail::Mailer.new({
|
8
|
-
# name: "store/contact",
|
9
|
-
# to: "test@mail.com",
|
10
|
-
# from: "test@mail.com",
|
11
|
-
# bcc: "test@mail.com",
|
12
|
-
# subject: "Subject",
|
13
|
-
#})
|
1
|
+
EasyMail::Mailer.setup(to: "", from: "", bcc: "", subject: "") do
|
2
|
+
# new :contact
|
3
|
+
# new "store/contact", to: "test@mail.com", from: "test@mail.com", bcc: "test@mail.com", subject: "Subject"
|
4
|
+
end
|
data/spec/easy_mail_spec.rb
CHANGED
@@ -1,106 +1,115 @@
|
|
1
1
|
require "easy_mail"
|
2
2
|
require "action_controller"
|
3
|
+
require "rails"
|
3
4
|
|
4
5
|
describe EasyMail::Mailer do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
before(:all) do
|
7
|
+
class ApplicationController < ActionController::Base
|
8
|
+
end
|
9
|
+
|
10
|
+
module Mail
|
11
|
+
class Contact < EasyMail::BaseModel
|
12
|
+
attr_accessor :name, :email, :message
|
9
13
|
end
|
14
|
+
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
16
|
+
module Store
|
17
|
+
module Part
|
18
|
+
class ApplicationController < ::ApplicationController
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
14
22
|
|
15
|
-
|
23
|
+
module Mail
|
24
|
+
module Store
|
25
|
+
module Part
|
26
|
+
class Contact < EasyMail::BaseModel
|
27
|
+
attr_accessor :name, :email, :message
|
28
|
+
end
|
16
29
|
end
|
17
30
|
end
|
18
31
|
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context ".setup" do
|
35
|
+
let(:production_env?) { false }
|
19
36
|
|
20
37
|
before do
|
21
|
-
|
22
|
-
end
|
38
|
+
Rails.stub_chain(:env, :production?).and_return(production_env?)
|
23
39
|
|
24
|
-
|
25
|
-
|
26
|
-
@
|
40
|
+
EasyMail::Mailer.all.clear
|
41
|
+
|
42
|
+
EasyMail::Mailer.setup to: "production@to.com", from: "production@from.com", bcc: "production@bcc.com", subject: "Production Subject" do
|
43
|
+
new :contact
|
44
|
+
new :contact_2, to: "1liang@andertec.ca", bcc: "1123924971@qq.com", from: "1test@gmail.com", subject: "1Please Read"
|
45
|
+
new "store/part/contact"
|
46
|
+
end
|
27
47
|
end
|
28
48
|
|
29
|
-
it
|
49
|
+
it do
|
50
|
+
defined?(Mail::ContactsController).should == "constant"
|
30
51
|
defined?(ContactMailer).should == "constant"
|
31
|
-
@mailer.template_path.should == "mail_template"
|
32
52
|
end
|
33
53
|
|
34
|
-
it
|
35
|
-
|
36
|
-
|
37
|
-
@mailer.route_as.should == "mail_contact"
|
54
|
+
it do
|
55
|
+
defined?(Store::Part::Mail::ContactsController).should == "constant"
|
56
|
+
defined?(Store::Part::ContactMailer).should == "constant"
|
38
57
|
end
|
39
58
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
@mailer.to.should == "liang@andertec.ca"
|
53
|
-
@mailer.bcc.should == "123924971@qq.com"
|
54
|
-
@mailer.from.should == "test@gmail.com"
|
55
|
-
@mailer.subject.should == "Test Subject"
|
56
|
-
end
|
59
|
+
it "contact" do
|
60
|
+
mailer = EasyMail::Mailer.all.detect{|m| m.name == "contact" && m.namespace == "" }
|
61
|
+
mailer.form_key.should == :mail_contact
|
62
|
+
mailer.template_path.should == "mail_template"
|
63
|
+
mailer.route_url.should == "/contact"
|
64
|
+
mailer.route_to_controller_part.should == "mail/contacts"
|
65
|
+
mailer.route_as.should == "mail_contact"
|
66
|
+
|
67
|
+
mailer.to.should == "liang@andertec.ca"
|
68
|
+
mailer.bcc.should == "123924971@qq.com"
|
69
|
+
mailer.from.should == "test@gmail.com"
|
70
|
+
mailer.subject.should == "Production Subject"
|
57
71
|
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "have namespace" do
|
61
|
-
before(:all) do
|
62
|
-
class ApplicationController < ActionController::Base
|
63
|
-
end
|
64
72
|
|
65
|
-
|
66
|
-
|
67
|
-
class ApplicationController < ::ApplicationController
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
module Mail
|
73
|
-
module Store
|
74
|
-
module Part
|
75
|
-
class Contact < EasyMail::BaseModel
|
76
|
-
attr_accessor :name, :email, :message
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
73
|
+
it "contact_2" do
|
74
|
+
mailer = EasyMail::Mailer.all.detect{|m| m.name == "contact_2" && m.namespace == "" }
|
81
75
|
|
82
|
-
|
76
|
+
mailer.to.should == "liang@andertec.ca"
|
77
|
+
mailer.bcc.should == "123924971@qq.com"
|
78
|
+
mailer.from.should == "test@gmail.com"
|
79
|
+
mailer.subject.should == "1Please Read"
|
83
80
|
end
|
84
81
|
|
85
|
-
it do
|
86
|
-
|
87
|
-
|
82
|
+
it "store/part/contact" do
|
83
|
+
mailer = EasyMail::Mailer.all.detect{|m| m.name == "contact" && m.namespace == "Store::Part" }
|
84
|
+
mailer.name.should == "contact"
|
85
|
+
mailer.namespace.should == "Store::Part"
|
86
|
+
mailer.form_key.should == :store_part_mail_contact
|
87
|
+
mailer.template_path.should == "mail_template/store/part"
|
88
|
+
mailer.route_url.should == "/store/part/contact"
|
89
|
+
mailer.route_to_controller_part.should == "store/part/mail/contacts"
|
90
|
+
mailer.route_as.should == "store_part_mail_contact"
|
88
91
|
end
|
89
92
|
|
90
|
-
|
91
|
-
|
92
|
-
@mailer.form_key.should == :store_part_mail_contact
|
93
|
-
end
|
93
|
+
context "with production env" do
|
94
|
+
let(:production_env?) { true }
|
94
95
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
it "contact" do
|
97
|
+
mailer = EasyMail::Mailer.all.detect{|m| m.name == "contact" && m.namespace == "" }
|
98
|
+
|
99
|
+
mailer.to.should == "production@to.com"
|
100
|
+
mailer.bcc.should == "production@bcc.com"
|
101
|
+
mailer.from.should == "production@from.com"
|
102
|
+
mailer.subject.should == "Production Subject"
|
103
|
+
end
|
99
104
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
105
|
+
it "contact_2" do
|
106
|
+
mailer = EasyMail::Mailer.all.detect{|m| m.name == "contact_2" && m.namespace == "" }
|
107
|
+
|
108
|
+
mailer.to.should == "1liang@andertec.ca"
|
109
|
+
mailer.bcc.should == "1123924971@qq.com"
|
110
|
+
mailer.from.should == "1test@gmail.com"
|
111
|
+
mailer.subject.should == "1Please Read"
|
112
|
+
end
|
104
113
|
end
|
105
114
|
end
|
106
115
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_mail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: easy_validator
|
@@ -47,12 +47,10 @@ files:
|
|
47
47
|
- lib/generators/easy_mail/install/install_generator.rb
|
48
48
|
- lib/generators/easy_mail/install/templates/confirmation.html.erb
|
49
49
|
- lib/generators/easy_mail/install/templates/easy_mail.rb
|
50
|
-
- lib/generators/easy_mail/install/templates/mail_config.yml
|
51
50
|
- lib/generators/easy_mail/model/model_generator.rb
|
52
51
|
- lib/generators/easy_mail/model/templates/model.rb
|
53
52
|
- spec/base_model_spec.rb
|
54
53
|
- spec/easy_mail_spec.rb
|
55
|
-
- spec/mailer_spec.rb
|
56
54
|
homepage: ''
|
57
55
|
licenses: []
|
58
56
|
post_install_message:
|
@@ -80,5 +78,4 @@ summary: test
|
|
80
78
|
test_files:
|
81
79
|
- spec/base_model_spec.rb
|
82
80
|
- spec/easy_mail_spec.rb
|
83
|
-
- spec/mailer_spec.rb
|
84
81
|
has_rdoc:
|
data/spec/mailer_spec.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
require "easy_mail"
|
2
|
-
require "action_controller"
|
3
|
-
|
4
|
-
describe EasyMail::Mailer do
|
5
|
-
context "normal" do
|
6
|
-
let(:mailer_params) { { name: "contact" } }
|
7
|
-
before(:all) do
|
8
|
-
class ApplicationController < ActionController::Base
|
9
|
-
end
|
10
|
-
|
11
|
-
module Mail
|
12
|
-
class Contact < EasyMail::BaseModel
|
13
|
-
attr_accessor :name, :email, :message
|
14
|
-
|
15
|
-
validates_email_format_of :email
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
before do
|
21
|
-
@mailer = EasyMail::Mailer.new(mailer_params)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "controller part" do
|
25
|
-
defined?(Mail::ContactsController).should == "constant"
|
26
|
-
@mailer.form_key.should == :mail_contact
|
27
|
-
end
|
28
|
-
|
29
|
-
it "mailer part" do
|
30
|
-
defined?(ContactMailer).should == "constant"
|
31
|
-
@mailer.template_path.should == "mail_template"
|
32
|
-
end
|
33
|
-
|
34
|
-
it "route part" do
|
35
|
-
@mailer.route_url.should == "/contact"
|
36
|
-
@mailer.route_to_controller_part.should == "mail/contacts"
|
37
|
-
@mailer.route_as.should == "mail_contact"
|
38
|
-
end
|
39
|
-
|
40
|
-
context "with mail config" do
|
41
|
-
let(:mailer_params) do
|
42
|
-
{
|
43
|
-
name: "contact",
|
44
|
-
to: "liang@andertec.ca",
|
45
|
-
bcc: "123924971@qq.com",
|
46
|
-
from: "test@gmail.com",
|
47
|
-
subject: "Test Subject"
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
it do
|
52
|
-
@mailer.to.should == "liang@andertec.ca"
|
53
|
-
@mailer.bcc.should == "123924971@qq.com"
|
54
|
-
@mailer.from.should == "test@gmail.com"
|
55
|
-
@mailer.subject.should == "Test Subject"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "have namespace" do
|
61
|
-
before(:all) do
|
62
|
-
class ApplicationController < ActionController::Base
|
63
|
-
end
|
64
|
-
|
65
|
-
module Store
|
66
|
-
module Part
|
67
|
-
class ApplicationController < ::ApplicationController
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
module Mail
|
73
|
-
module Store
|
74
|
-
module Part
|
75
|
-
class Contact < EasyMail::BaseModel
|
76
|
-
attr_accessor :name, :email, :message
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
@mailer = EasyMail::Mailer.new(name: "store/part/contact")
|
83
|
-
end
|
84
|
-
|
85
|
-
it "controller part" do
|
86
|
-
defined?(Store::Part::Mail::ContactsController).should == "constant"
|
87
|
-
@mailer.form_key.should == :store_part_mail_contact
|
88
|
-
end
|
89
|
-
|
90
|
-
it "mailer part" do
|
91
|
-
defined?(Store::Part::ContactMailer).should == "constant"
|
92
|
-
@mailer.template_path.should == "mail_template/store/part"
|
93
|
-
end
|
94
|
-
|
95
|
-
it "route part" do
|
96
|
-
@mailer.route_url.should == "/store/part/contact"
|
97
|
-
@mailer.route_to_controller_part.should == "store/part/mail/contacts"
|
98
|
-
@mailer.route_as.should == "store_part_mail_contact"
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|