dj_mailer 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.
- data/README.md +16 -11
- data/dj_mailer.gemspec +3 -2
- data/features/dj_mailer_deliver.feature +1 -0
- data/features/step_definitions/dj_mailer_deliver_steps.rb +4 -0
- data/features/support/env.rb +0 -2
- data/features/support/hooks.rb +3 -0
- data/lib/dj_mailer.rb +10 -5
- data/lib/dj_mailer/version.rb +1 -1
- data/spec/lib/deliverable_spec.rb +42 -0
- metadata +17 -13
data/README.md
CHANGED
@@ -19,15 +19,8 @@ deliver calls as follows:
|
|
19
19
|
|
20
20
|
By adding this gem in your gemfile all your current emails will be automatically
|
21
21
|
handled by delayed job without any interface change. At the moment you have
|
22
|
-
to setup the delayed job environment
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
## Note
|
27
|
-
|
28
|
-
I could not make the current version of delayed_job_active_record (0.3.2) work
|
29
|
-
with recent versions of ActionMailer, it does with 3.0.5. I will investigate
|
30
|
-
the reason of the failure ASAP.
|
22
|
+
to setup the delayed job environment on your own running the migrations for the
|
23
|
+
db.
|
31
24
|
|
32
25
|
|
33
26
|
## Installation
|
@@ -36,11 +29,23 @@ Add this line to your application's Gemfile:
|
|
36
29
|
```ruby
|
37
30
|
gem 'dj_mailer'
|
38
31
|
```
|
39
|
-
And then execute:
|
32
|
+
And then execute: `bundle`
|
40
33
|
|
41
34
|
Or install it yourself as:
|
35
|
+
```bash
|
36
|
+
gem install dj_mailer
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
## Tests
|
41
|
+
|
42
|
+
to run the specs:
|
43
|
+
```bash
|
44
|
+
bundle exec rake spec
|
42
45
|
```
|
43
|
-
|
46
|
+
to run the cucumber features:
|
47
|
+
```bash
|
48
|
+
bundle exec rake cucumber
|
44
49
|
```
|
45
50
|
|
46
51
|
|
data/dj_mailer.gemspec
CHANGED
@@ -15,13 +15,14 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ['lib']
|
16
16
|
gem.version = DjMailer::VERSION
|
17
17
|
|
18
|
+
gem.add_dependency 'actionmailer'
|
18
19
|
gem.add_dependency 'delayed_job_active_record'
|
19
|
-
|
20
|
+
|
20
21
|
gem.add_development_dependency 'rake'
|
21
22
|
gem.add_development_dependency 'rspec'
|
22
23
|
gem.add_development_dependency 'sqlite3'
|
23
24
|
gem.add_development_dependency 'cucumber'
|
24
25
|
gem.add_development_dependency 'guard-rspec'
|
26
|
+
gem.add_development_dependency 'activerecord'
|
25
27
|
gem.add_development_dependency 'guard-cucumber'
|
26
|
-
gem.add_development_dependency 'activerecord', '3.0.5'
|
27
28
|
end
|
data/features/support/env.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# At the moment delayed_job_active_record is quite broken. It surely works
|
2
2
|
# fine with actionmailer 3.0.5
|
3
|
-
gem 'actionmailer', '3.0.5'
|
4
3
|
require 'action_mailer'
|
5
4
|
|
6
5
|
ActionMailer::Base.delivery_method = :test
|
@@ -8,7 +7,6 @@ ActionMailer::Base.delivery_method = :test
|
|
8
7
|
|
9
8
|
# Forcing actionmailer to v3.0.5 requires also activerecord to have same version,
|
10
9
|
# this is to avoid dependencies conflicts (activesupport version, for example)
|
11
|
-
gem 'activerecord', '3.0.5'
|
12
10
|
require 'delayed_job_active_record'
|
13
11
|
|
14
12
|
class DjMigration < ActiveRecord::Migration
|
data/lib/dj_mailer.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'action_mailer'
|
1
2
|
# cucumber complains with require 'dj_mailer/version'
|
2
3
|
require File.expand_path('../dj_mailer/version', __FILE__)
|
3
4
|
|
@@ -14,12 +15,16 @@ module DjMailer
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def method_missing_with_delay(method, *args)
|
17
|
-
if caller
|
18
|
-
|
18
|
+
if respond_to?(method) and !caller.grep('delayed_job').present?
|
19
|
+
enqueue_with_delayed_job(method, *args)
|
19
20
|
else
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
method_missing_without_delay(method, *args)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def enqueue_with_delayed_job(method, *args)
|
26
|
+
delay.send(method, *args).tap do |dj_instance|
|
27
|
+
dj_instance.extend Deliverable
|
23
28
|
end
|
24
29
|
end
|
25
30
|
end
|
data/lib/dj_mailer/version.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module DjMailer
|
4
|
+
describe Delayable do
|
5
|
+
describe 'the extended class' do
|
6
|
+
subject {Class.new {extend Delayable}}
|
7
|
+
|
8
|
+
it 'responds to method_missing_with_delay' do
|
9
|
+
subject.should respond_to(:method_missing_with_delay)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'method_missing_with_delay' do
|
13
|
+
context 'when the class does not respond to the method' do
|
14
|
+
it 'delegates to the original method_missing' do
|
15
|
+
subject.should_receive(:method_missing_without_delay)
|
16
|
+
subject.method_missing_with_delay(:not_responding)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when the class respond to the method' do
|
21
|
+
before {subject.should_receive(:respond_to?).and_return(true)}
|
22
|
+
|
23
|
+
context 'when the caller is delayed_job' do
|
24
|
+
it 'should delegate to the original method_missing' do
|
25
|
+
subject.stub(:caller => ['delayed_job'])
|
26
|
+
subject.should_receive(:method_missing_without_delay)
|
27
|
+
subject.method_missing_with_delay(:responding)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when the caller is not delayed_job' do
|
32
|
+
it 'should equeue the email for late delivery' do
|
33
|
+
subject.stub(:caller => [])
|
34
|
+
subject.should_receive(:enqueue_with_delayed_job)
|
35
|
+
subject.method_missing_with_delay(:responding)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dj_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ cert_chain: []
|
|
12
12
|
date: 2012-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: actionmailer
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
@@ -28,21 +28,21 @@ dependencies:
|
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: delayed_job_active_record
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- - '
|
35
|
+
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: '0'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- - '
|
43
|
+
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: rake
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,7 +124,7 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: activerecord
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
@@ -140,21 +140,21 @@ dependencies:
|
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '0'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
143
|
+
name: guard-cucumber
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|
147
|
-
- - '
|
147
|
+
- - ! '>='
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
149
|
+
version: '0'
|
150
150
|
type: :development
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
153
|
none: false
|
154
154
|
requirements:
|
155
|
-
- - '
|
155
|
+
- - ! '>='
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
157
|
+
version: '0'
|
158
158
|
description: send automatically all emails via delayed_job
|
159
159
|
email:
|
160
160
|
- andrea@spaghetticode.it
|
@@ -176,10 +176,12 @@ files:
|
|
176
176
|
- features/step_definitions/dj_mailer_deliver_steps.rb
|
177
177
|
- features/support/.gitkeep
|
178
178
|
- features/support/env.rb
|
179
|
+
- features/support/hooks.rb
|
179
180
|
- features/support/world_extensions.rb
|
180
181
|
- lib/dj_mailer.rb
|
181
182
|
- lib/dj_mailer/version.rb
|
182
183
|
- spec/lib/.gitkeep
|
184
|
+
- spec/lib/deliverable_spec.rb
|
183
185
|
- spec/spec_helper.rb
|
184
186
|
homepage: ''
|
185
187
|
licenses: []
|
@@ -212,6 +214,8 @@ test_files:
|
|
212
214
|
- features/step_definitions/dj_mailer_deliver_steps.rb
|
213
215
|
- features/support/.gitkeep
|
214
216
|
- features/support/env.rb
|
217
|
+
- features/support/hooks.rb
|
215
218
|
- features/support/world_extensions.rb
|
216
219
|
- spec/lib/.gitkeep
|
220
|
+
- spec/lib/deliverable_spec.rb
|
217
221
|
- spec/spec_helper.rb
|