smailer 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|