merb_resque_mailer 0.1 → 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 +3 -1
- data/spec/merb_resque_mailer_spec.rb +64 -0
- data/spec/spec_helper.rb +22 -0
- metadata +3 -1
data/README.md
CHANGED
@@ -24,6 +24,8 @@ Jobs are added to "mailer" queue so you should start at least one worker listeni
|
|
24
24
|
|
25
25
|
QUEUE=mailer rake merb_env resque:work
|
26
26
|
|
27
|
+
Be sure you have 'resque/tasks' required in your Rakefile (or somewhere in lib/tasks/), it's required for above task to work.
|
28
|
+
|
27
29
|
From now on all emails will be sent asynchronously using Resque worker(s).
|
28
30
|
|
29
31
|
Installation
|
@@ -33,7 +35,7 @@ Gem is hosted on gemcutter.org, simply install it by:
|
|
33
35
|
|
34
36
|
gem install merb_resque_mailer
|
35
37
|
|
36
|
-
and require it in your app (or just add it bundler's Gemfile).
|
38
|
+
and require it in your app (or just add it to bundler's Gemfile).
|
37
39
|
|
38
40
|
Configuration
|
39
41
|
-------------
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
::Resque::Mailer.excluded_environments = []
|
4
|
+
|
5
|
+
class TestMailer < Merb::MailController
|
6
|
+
include Resque::Mailer
|
7
|
+
|
8
|
+
ACTION_PARAMS = {}
|
9
|
+
MAILER_PARAMS = { :from => "jola@example.org", :to => "misio@example.org", :subject => "Friendship established" }
|
10
|
+
|
11
|
+
def friendship_confirmation
|
12
|
+
render_mail :text => "Mail content"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
delivery = lambda do
|
17
|
+
TestMailer.new(TestMailer::ACTION_PARAMS).dispatch_and_deliver(:friendship_confirmation, TestMailer::MAILER_PARAMS)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe TestMailer do
|
21
|
+
describe '#dispatch_and_deliver' do
|
22
|
+
before(:each) do
|
23
|
+
Resque.stub(:enqueue)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should not deliver the email synchronously' do
|
27
|
+
lambda { delivery.call }.should_not change(Merb::Mailer.deliveries, :count)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should place the deliver action on the Resque "mailer" queue' do
|
31
|
+
Resque.should_receive(:enqueue).with(TestMailer, TestMailer::ACTION_PARAMS, :friendship_confirmation, TestMailer::MAILER_PARAMS)
|
32
|
+
delivery.call
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should not deliver through Resque for excluded environments' do
|
36
|
+
excluded_envs = [:test, :staging]
|
37
|
+
::Resque::Mailer.excluded_environments = excluded_envs
|
38
|
+
|
39
|
+
excluded_envs.each do |env|
|
40
|
+
Merb.should_receive(:env).and_return(env)
|
41
|
+
Resque.should_not_receive(:enqueue)
|
42
|
+
delivery.call
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#dispatch_and_deliver!' do
|
48
|
+
it 'should deliver the mail' do
|
49
|
+
lambda { delivery.call }.should change(Merb::Mailer.deliveries, :count).by(1)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should should have queue name' do
|
54
|
+
TestMailer.should respond_to(:queue)
|
55
|
+
end
|
56
|
+
|
57
|
+
describe ".perform" do
|
58
|
+
it 'should perform a queued mailer job' do
|
59
|
+
lambda do
|
60
|
+
TestMailer.perform(TestMailer::ACTION_PARAMS, :friendship_confirmation, TestMailer::MAILER_PARAMS)
|
61
|
+
end.should change(Merb::Mailer.deliveries, :count).by(1)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'spec'
|
4
|
+
require 'spec/autorun'
|
5
|
+
|
6
|
+
require 'merb-core'
|
7
|
+
require 'merb-mailer'
|
8
|
+
|
9
|
+
Merb::Config.use do |c|
|
10
|
+
c[:session_store] = :memory
|
11
|
+
end
|
12
|
+
|
13
|
+
# Merb.start :environment => 'test'
|
14
|
+
Merb.start_environment(:testing => true, :adapter => 'runner', :environment => 'test')
|
15
|
+
Merb::Mailer.delivery_method = :test_send
|
16
|
+
|
17
|
+
require 'merb_resque_mailer'
|
18
|
+
|
19
|
+
Spec::Runner.configure do |config|
|
20
|
+
config.include Merb::Test::RequestHelper
|
21
|
+
config.include Merb::Test::ControllerHelper
|
22
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb_resque_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.2"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Kulik
|
@@ -33,6 +33,8 @@ extra_rdoc_files: []
|
|
33
33
|
files:
|
34
34
|
- lib/merb_resque_mailer.rb
|
35
35
|
- README.md
|
36
|
+
- spec/spec_helper.rb
|
37
|
+
- spec/merb_resque_mailer_spec.rb
|
36
38
|
has_rdoc: true
|
37
39
|
homepage: http://sickill.net
|
38
40
|
licenses: []
|