smailer 0.6.2 → 0.6.3
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 +7 -0
- data/README.md +1 -1
- data/lib/generators/smailer/migration_generator.rb +7 -1
- data/lib/smailer/compatibility.rb +9 -1
- data/lib/smailer/models/mail_campaign.rb +3 -1
- data/lib/smailer/models/mail_key.rb +3 -1
- data/lib/smailer/models/mailing_list.rb +3 -1
- data/lib/smailer/models/property.rb +8 -2
- data/lib/smailer/models/queued_mail.rb +3 -1
- data/lib/smailer/tasks/send.rb +15 -4
- data/lib/smailer/version.rb +1 -1
- metadata +29 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b0ad9b68b1053871829e187454142b621a48935f
|
4
|
+
data.tar.gz: 5179717f9a0447996510e2f1dff7081b8d601245
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8ec561c47706b8b7271a2b73b4428db6cf3156bca66e93846329a6a0ffa83185fec6f961d7016800cdc6bfdc446fd9f3af17d609c92f14956f61626b869ba3ae
|
7
|
+
data.tar.gz: 2abf5eb90fa6042aba5412fe4631568ed27a907d126a358b4ce76f18467dd812281ff70cbe54e99ac23201b62da1517be0d3d937a9f5e52a7d167f1e5eff5ce5
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## Intro
|
4
4
|
|
5
|
-
This project is a simple mailer for newsletters, which implements simple queue processing, basic campaign management, [VERP support](http://en.wikipedia.org/wiki/Variable_envelope_return_path), bounce processing and auto-unsubscribe of invalid emails and
|
5
|
+
This project is a simple mailer for newsletters, which implements simple queue processing, basic campaign management, [VERP support](http://en.wikipedia.org/wiki/Variable_envelope_return_path), bounce processing and auto-unsubscribe of invalid emails and also assists you in implementing unsubscribe links in the email messages.
|
6
6
|
|
7
7
|
It is intended to be used within a Rails project. It has been tested with Rails 3.0.x, Rails 3.1.0 and Rails 2.3.5.
|
8
8
|
|
@@ -3,11 +3,17 @@ require "rails/generators/active_record"
|
|
3
3
|
module Smailer
|
4
4
|
class MigrationGenerator < Rails::Generators::Base
|
5
5
|
include Rails::Generators::Migration
|
6
|
-
|
6
|
+
unless Smailer::Compatibility.rails_4?
|
7
|
+
extend ActiveRecord::Generators::Migration
|
8
|
+
end
|
7
9
|
|
8
10
|
desc "Create a migration file with definitions of the tables needed to run Smailer."
|
9
11
|
source_root File.expand_path('../templates', __FILE__)
|
10
12
|
|
13
|
+
def self.next_migration_number(path)
|
14
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
15
|
+
end
|
16
|
+
|
11
17
|
def generate_migration
|
12
18
|
file_name = 'create_smailer_tables'
|
13
19
|
|
@@ -4,8 +4,16 @@ module Smailer
|
|
4
4
|
Rails::VERSION::MAJOR == 3
|
5
5
|
end
|
6
6
|
|
7
|
+
def self.rails_4?
|
8
|
+
Rails::VERSION::MAJOR == 4
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.rails_3_or_4?
|
12
|
+
self.rails_3? || self.rails_4?
|
13
|
+
end
|
14
|
+
|
7
15
|
def self.save_without_validation(object)
|
8
|
-
|
16
|
+
rails_3_or_4? ? object.save(:validate => false) : object.save(false)
|
9
17
|
end
|
10
18
|
end
|
11
19
|
end
|
@@ -15,7 +15,9 @@ module Smailer
|
|
15
15
|
validates_numericality_of :mailing_list_id, :unsubscribe_methods, :only_integer => true, :allow_nil => true
|
16
16
|
validates_length_of :from, :subject, :maximum => 255, :allow_nil => true
|
17
17
|
|
18
|
-
|
18
|
+
unless Smailer::Compatibility.rails_4?
|
19
|
+
attr_accessible :mailing_list_id, :from, :subject, :body_html, :body_text
|
20
|
+
end
|
19
21
|
|
20
22
|
def add_unsubscribe_method(method)
|
21
23
|
self.unsubscribe_methods = (self.unsubscribe_methods || 0) | method
|
@@ -8,7 +8,9 @@ module Smailer
|
|
8
8
|
validates_uniqueness_of :key
|
9
9
|
validates_length_of :email, :key, :maximum => 255
|
10
10
|
|
11
|
-
|
11
|
+
unless Smailer::Compatibility.rails_4?
|
12
|
+
attr_accessible :email, :key
|
13
|
+
end
|
12
14
|
|
13
15
|
before_validation :set_key
|
14
16
|
before_save :set_key
|
@@ -1,12 +1,18 @@
|
|
1
1
|
module Smailer
|
2
2
|
module Models
|
3
3
|
class Property < ActiveRecord::Base
|
4
|
-
|
4
|
+
if Smailer::Compatibility.rails_3_or_4?
|
5
|
+
self.table_name = 'smailer_properties'
|
6
|
+
else
|
7
|
+
set_table_name 'smailer_properties'
|
8
|
+
end
|
5
9
|
|
6
10
|
validates_presence_of :name
|
7
11
|
validates_uniqueness_of :name
|
8
12
|
|
9
|
-
|
13
|
+
unless Smailer::Compatibility.rails_4?
|
14
|
+
attr_accessible :name, :value, :notes
|
15
|
+
end
|
10
16
|
|
11
17
|
@@cache_created_at = Time.now
|
12
18
|
|
@@ -11,7 +11,9 @@ module Smailer
|
|
11
11
|
validates_numericality_of :mail_campaign_id, :retries, :only_integer => true, :allow_nil => true
|
12
12
|
validates_length_of :to, :last_error, :maximum => 255, :allow_nil => true
|
13
13
|
|
14
|
-
|
14
|
+
unless Smailer::Compatibility.rails_4?
|
15
|
+
attr_accessible :mail_campaign_id, :to
|
16
|
+
end
|
15
17
|
|
16
18
|
delegate :from, :subject, :mailing_list, :to => :mail_campaign, :allow_nil => true
|
17
19
|
|
data/lib/smailer/tasks/send.rb
CHANGED
@@ -11,7 +11,7 @@ module Smailer
|
|
11
11
|
raise "VERP is enabled, but a :return_path_domain option has not been specified or is blank."
|
12
12
|
end
|
13
13
|
|
14
|
-
rails_delivery_method = if Compatibility.
|
14
|
+
rails_delivery_method = if Smailer::Compatibility.rails_3_or_4?
|
15
15
|
method = Rails.configuration.action_mailer.delivery_method
|
16
16
|
[method, Rails.configuration.action_mailer.send("#{method}_settings")]
|
17
17
|
else
|
@@ -29,18 +29,29 @@ module Smailer
|
|
29
29
|
results = []
|
30
30
|
|
31
31
|
# clean up any old locked items
|
32
|
-
|
32
|
+
expired_locks_condition = ['locked = ? AND locked_at <= ?', true, 1.hour.ago.utc]
|
33
|
+
if Smailer::Compatibility.rails_3_or_4?
|
34
|
+
Smailer::Models::QueuedMail.where(expired_locks_condition).update_all(:locked => false)
|
35
|
+
else
|
36
|
+
Smailer::Models::QueuedMail.update_all({:locked => false}, expired_locks_condition)
|
37
|
+
end
|
33
38
|
|
34
39
|
# load the queue items to process
|
35
40
|
queue_sort_order = 'retries ASC, id ASC'
|
36
|
-
items_to_process = if Compatibility.
|
41
|
+
items_to_process = if Smailer::Compatibility.rails_3_or_4?
|
37
42
|
Smailer::Models::QueuedMail.where(:locked => false).order(queue_sort_order).limit(batch_size)
|
38
43
|
else
|
39
44
|
Smailer::Models::QueuedMail.all(:conditions => {:locked => false}, :order => queue_sort_order, :limit => batch_size)
|
40
45
|
end
|
41
46
|
|
42
47
|
# lock the queue items
|
43
|
-
|
48
|
+
lock_condition = {:id => items_to_process.map(&:id)}
|
49
|
+
lock_update = {:locked => true, :locked_at => Time.now.utc}
|
50
|
+
if Smailer::Compatibility.rails_3_or_4?
|
51
|
+
Smailer::Models::QueuedMail.where(lock_condition).update_all(lock_update)
|
52
|
+
else
|
53
|
+
Smailer::Models::QueuedMail.update_all(lock_update, lock_condition)
|
54
|
+
end
|
44
55
|
|
45
56
|
items_to_process.each do |queue_item|
|
46
57
|
# try to send the email
|
data/lib/smailer/version.rb
CHANGED
metadata
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Dimitar Dimitrov
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.0.0
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: mail
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- - ~>
|
31
|
+
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '2.3'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.3'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: bounce_email
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- - ~>
|
45
|
+
- - "~>"
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0.2'
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.2'
|
47
55
|
description: A simple mailer for newsletters with basic campaign management, queue
|
48
56
|
and unsubscribe support. To be used within Rails.
|
49
57
|
email:
|
@@ -52,7 +60,7 @@ executables: []
|
|
52
60
|
extensions: []
|
53
61
|
extra_rdoc_files: []
|
54
62
|
files:
|
55
|
-
- .gitignore
|
63
|
+
- ".gitignore"
|
56
64
|
- Gemfile
|
57
65
|
- README.md
|
58
66
|
- Rakefile
|
@@ -80,27 +88,25 @@ files:
|
|
80
88
|
- smailer.gemspec
|
81
89
|
homepage: http://github.com/mitio/smailer
|
82
90
|
licenses: []
|
91
|
+
metadata: {}
|
83
92
|
post_install_message:
|
84
93
|
rdoc_options: []
|
85
94
|
require_paths:
|
86
95
|
- lib
|
87
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
97
|
requirements:
|
90
|
-
- -
|
98
|
+
- - ">="
|
91
99
|
- !ruby/object:Gem::Version
|
92
100
|
version: '0'
|
93
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
102
|
requirements:
|
96
|
-
- -
|
103
|
+
- - ">="
|
97
104
|
- !ruby/object:Gem::Version
|
98
105
|
version: 1.3.6
|
99
106
|
requirements: []
|
100
107
|
rubyforge_project: smailer
|
101
|
-
rubygems_version:
|
108
|
+
rubygems_version: 2.2.0
|
102
109
|
signing_key:
|
103
|
-
specification_version:
|
110
|
+
specification_version: 4
|
104
111
|
summary: A simple newsletter mailer for Rails.
|
105
112
|
test_files: []
|
106
|
-
has_rdoc:
|