newsly 0.1.7 → 0.2.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.
@@ -27,7 +27,7 @@ module Newsly
27
27
  end
28
28
 
29
29
  def send_test
30
- if Newsly::Mailer.send_newsletter(@newsletter.id, params[:to], Newsly.test_data).deliver
30
+ if Newsly::Mailer.build_newsletter(@newsletter.id, params[:to], Newsly.test_data).deliver
31
31
  render :text => "Okidoki"
32
32
  end
33
33
  end
@@ -27,7 +27,7 @@ module Newsly
27
27
 
28
28
  def send_test
29
29
  @template = Newsly::Template.find(params[:id])
30
- if Newsly::Mailer.send_mail(@template.id, params[:to], Newsly.test_data).deliver
30
+ if Newsly::Mailer.build_mail(@template.id, params[:to], Newsly.test_data).deliver
31
31
  render :text => "Okidoki"
32
32
  end
33
33
 
@@ -2,44 +2,26 @@
2
2
  module Newsly
3
3
  class Mailer < ActionMailer::Base
4
4
 
5
- default :from => "Newsly <noreply@newsly.com>"
6
-
7
- def mail(headers = {}, &block)
8
- caller = caller[0][/`.*'/][1..-2] if caller
5
+ default :from => Newsly.default_from, :return_path => Newsly.return_path
9
6
 
10
- template_data = headers.delete(:template_data)
11
- template_id = headers.delete(:template_id)
12
- template_name = headers.delete(:template_name)
13
-
14
- tmpl = if template_id
15
- Newsly::Template.find(template_id)
16
- elsif template_name
17
- Newsly::Template.where(:name => template_name, :draft => false).first
18
- else
19
- Newsly::Template.find_by_caller(self.class.to_s, caller).where(:draft => false).first
20
- end
21
-
22
- if tmpl
23
- headers[:subject] ||= tmpl.subject
24
- mail_body = tmpl.render(template_data).html_safe
25
- super(headers) do |format|
26
- #format.text { Premailer.new(mail_body, :with_html_string => true).to_plain_text }
27
- format.html { render :inline => mail_body, :layout => true }
28
- end
29
- else
30
- super(headers, &block)
31
- end
32
- end
33
-
34
- def send_newsletter(newsletter_id, to, template_data = {})
7
+ def build_newsletter(newsletter_id, to, template_data = {}, extra_headers = {})
35
8
  @newsletter = Newsly::Newsletter.find(newsletter_id)
36
9
  @template = Newsly::Template.where(:name => "newsletter", :draft => false).first
37
10
  @template_data = template_data.merge({"newsletter" => {"body" => @newsletter.render(template_data)}})
38
- mail(:to => to, :subject => "#{@newsletter.title}", :template_id => @template.id, :template_data => @template_data)
11
+ @extra_headers = {:subject => "#{@newsletter.title}"}.merge(extra_headers)
12
+ self.build_mail(@template.id, to, @template_data, @extra_headers)
39
13
  end
40
14
 
41
- def send_mail(template_id, to, template_data = {})
42
- mail(:to => to, :template_id => template_id, :template_data => template_data)
15
+ def build_mail(template_id, to, template_data = {}, extra_headers = {})
16
+ headers = {}
17
+ tmpl = Newsly::Template.find(template_id)
18
+ headers[:to] = to
19
+ headers[:subject] = tmpl.subject
20
+ body = tmpl.render(template_data)
21
+ headers = headers.merge(extra_headers)
22
+ mail(headers) do |format|
23
+ format.html { render :inline => body, :layout => "newsly/mailer" }
24
+ end
43
25
  end
44
26
 
45
27
  def self.render_body(template_name, template_type, template_data = {})
@@ -3,8 +3,6 @@ module Newsly
3
3
  class Newsletter < ActiveRecord::Base
4
4
  liquid_methods :title, :body
5
5
 
6
-
7
- #these 2 methods are duplicated in template.rb.. DRY up!
8
6
  def render(options={})
9
7
  Liquid::Template.parse(self.body).render options
10
8
  end
@@ -3,11 +3,6 @@ module Newsly
3
3
  class Template < ActiveRecord::Base
4
4
  liquid_methods :body
5
5
 
6
- scope :find_by_caller, lambda { |mailer, method|
7
- where(:mailer => mailer, :method => method)
8
- }
9
-
10
- #these 2 methods are duplicated in newsletter.rb.. DRY up!
11
6
  def render(options={})
12
7
  Liquid::Template.parse(self.body).render options
13
8
  end
@@ -1,5 +1,8 @@
1
1
  <html>
2
+ <head>
3
+ </head>
2
4
  <body>
5
+ <%# ADD THIS FILE TO YOUR APP, IN app/views/layouts/newsly/mailer.html.erb %>
3
6
  <%= yield %>
4
7
  </body>
5
8
  </html>
@@ -4,7 +4,7 @@ module Newsly
4
4
  def self.perform(newsletter_id, recipient_groups)
5
5
  for group in recipient_groups
6
6
  Newsly.get_newsletter_receipient_group(group.to_sym).call.find_each(:batch_size => 1000) do |resource|
7
- Newsly::Mailer.send_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid).deliver
7
+ Newsly::Mailer.build_newsletter(newsletter_id, resource.send(Newsly.resource_email_column), resource.to_liquid).deliver
8
8
  end
9
9
  end
10
10
 
data/lib/newsly.rb CHANGED
@@ -1,16 +1,17 @@
1
1
  require "newsly/engine"
2
2
  require "resque"
3
- #require "resque_mailer"
4
3
  require "liquid"
5
4
  require "sanitize"
6
- require "premailer"
5
+ #require "premailer"
7
6
 
8
7
  module Newsly
9
8
 
10
- mattr_accessor :test_data, :resource_email_column, :recipient_groups
9
+ mattr_accessor :test_data, :resource_email_column, :recipient_groups, :default_from, :return_path
11
10
  @@test_data = {}
12
11
  @@recipient_groups = {}
13
12
  @@resource_email_column = :email
13
+ @@default_from = "changethis@newsly.com"
14
+ @@return_path = "changethis@newsly.com"
14
15
 
15
16
  def self.setup
16
17
  yield self
@@ -1,3 +1,3 @@
1
1
  module Newsly
2
- VERSION = "0.1.7"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newsly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-06 00:00:00.000000000Z
13
+ date: 2011-10-03 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
- requirement: &2157766520 !ruby/object:Gem::Requirement
17
+ requirement: &2160503920 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - =
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.1.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2157766520
25
+ version_requirements: *2160503920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: resque
28
- requirement: &2157766040 !ruby/object:Gem::Requirement
28
+ requirement: &2160503380 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2157766040
36
+ version_requirements: *2160503380
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: liquid
39
- requirement: &2157765540 !ruby/object:Gem::Requirement
39
+ requirement: &2160502740 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2157765540
47
+ version_requirements: *2160502740
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: sanitize
50
- requirement: &2157765000 !ruby/object:Gem::Requirement
50
+ requirement: &2160502300 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2157765000
58
+ version_requirements: *2160502300
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jquery-rails
61
- requirement: &2157764480 !ruby/object:Gem::Requirement
61
+ requirement: &2160501520 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,21 +66,21 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2157764480
69
+ version_requirements: *2160501520
70
70
  - !ruby/object:Gem::Dependency
71
- name: premailer
72
- requirement: &2157763940 !ruby/object:Gem::Requirement
71
+ name: sqlite3
72
+ requirement: &2160501080 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
- type: :runtime
78
+ type: :development
79
79
  prerelease: false
80
- version_requirements: *2157763940
80
+ version_requirements: *2160501080
81
81
  - !ruby/object:Gem::Dependency
82
- name: sqlite3
83
- requirement: &2157763460 !ruby/object:Gem::Requirement
82
+ name: letter_opener
83
+ requirement: &2160499380 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2157763460
91
+ version_requirements: *2160499380
92
92
  - !ruby/object:Gem::Dependency
93
- name: letter_opener
94
- requirement: &2157763040 !ruby/object:Gem::Requirement
93
+ name: unicorn
94
+ requirement: &2160498960 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *2157763040
102
+ version_requirements: *2160498960
103
103
  description: Manage mailer templates via wysiwyg and liquid. Uses mercury editor for
104
104
  now. And send out newsletters.
105
105
  email: