mongo_mailer 0.0.0 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mongo_mailer might be problematic. Click here for more details.

Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +10 -13
  3. data/.travis.yml +6 -0
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +112 -61
  6. data/README.md +112 -0
  7. data/Rakefile +7 -4
  8. data/bin/console +7 -0
  9. data/bin/mongo_mailer +11 -0
  10. data/bin/worker +6 -0
  11. data/config/boot.rb +12 -0
  12. data/config/mongo_mailer.yml.example +38 -0
  13. data/lib/generators/mongo_mailer/mongo_mailer_generator.rb +10 -0
  14. data/lib/generators/mongo_mailer/templates/mongo_mailer.yml +38 -0
  15. data/lib/mongo_mailer.rb +9 -2
  16. data/lib/mongo_mailer/capistrano.rb +33 -0
  17. data/lib/mongo_mailer/capistrano3.rb +49 -0
  18. data/lib/mongo_mailer/common/deliveries_counter.rb +18 -0
  19. data/lib/mongo_mailer/common/has_mongo_collection.rb +36 -0
  20. data/lib/mongo_mailer/common/mail_queue.rb +49 -0
  21. data/lib/mongo_mailer/configuration.rb +127 -0
  22. data/lib/mongo_mailer/core_ext/hash.rb +12 -0
  23. data/lib/mongo_mailer/delivery_methods/mongo_queue.rb +28 -0
  24. data/lib/mongo_mailer/delivery_methods/test.rb +38 -0
  25. data/lib/mongo_mailer/rails.rb +5 -0
  26. data/lib/mongo_mailer/standalone.rb +6 -0
  27. data/lib/mongo_mailer/standalone/final_deliverer.rb +35 -0
  28. data/lib/mongo_mailer/standalone/worker.rb +23 -0
  29. data/lib/mongo_mailer/version.rb +3 -0
  30. data/log/.gitkeep +0 -0
  31. data/mongo_mailer.gemspec +25 -26
  32. data/spec/lib/common/deliveries_counter_spec.rb +22 -0
  33. data/spec/lib/common/mail_queue_spec.rb +68 -0
  34. data/spec/lib/configuration_spec.rb +26 -0
  35. data/spec/lib/standalone/final_deliverer_spec.rb +40 -0
  36. data/spec/rails/delivery_methods/mongo_queue_spec.rb +33 -0
  37. data/spec/spec_helper.rb +29 -0
  38. metadata +97 -44
  39. data/LICENSE +0 -21
@@ -0,0 +1,5 @@
1
+ require 'mongo_mailer'
2
+ require 'mongo_mailer/delivery_methods/mongo_queue'
3
+ require 'action_mailer'
4
+
5
+ ActionMailer::Base.add_delivery_method :mongo_queue, MongoMailer::DeliveryMethods::MongoQueue
@@ -0,0 +1,6 @@
1
+ require 'mongo_mailer'
2
+ require 'mongo_mailer/delivery_methods/test'
3
+
4
+ Dir[File.expand_path('../standalone/*', __FILE__)].each do |lib|
5
+ require lib
6
+ end
@@ -0,0 +1,35 @@
1
+ module MongoMailer
2
+ class FinalDeliverer
3
+ attr_reader :mail, :configuration, :counter
4
+
5
+ def initialize(encoded)
6
+ @encoded = encoded
7
+ @mail = Mail.new(@encoded)
8
+ @configuration = Configuration.instance
9
+ @counter = DeliveriesCounter.instance
10
+ end
11
+
12
+ def deliver!
13
+ begin
14
+ configuration.logger.info("[delivery][base] #{mail.inspect}")
15
+ mail.delivery_method *base_delivery
16
+ mail.deliver!
17
+ counter.increment(:base)
18
+ rescue => e
19
+ configuration.log_error(e)
20
+ configuration.logger.warn("[delivery][emergency] #{mail.inspect}")
21
+ mail.delivery_method *emergency_delivery
22
+ mail.deliver!
23
+ counter.increment(:emergency)
24
+ end
25
+ end
26
+
27
+ def base_delivery
28
+ Configuration.instance.base_delivery
29
+ end
30
+
31
+ def emergency_delivery
32
+ Configuration.instance.emergency_delivery
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ module MongoMailer
2
+ class Worker
3
+ attr_reader :configuration, :name
4
+
5
+ def initialize
6
+ @configuration = Configuration.instance
7
+ @name = "mongo_mailer_worker"
8
+ end
9
+
10
+ def run!
11
+ app_group = Daemons.run_proc(name, configuration.full_daemon_options) do
12
+ mail_queue = MailQueue.instance
13
+
14
+ loop do
15
+ mail_queue.find_and_deliver!
16
+ sleep(0.1)
17
+ end
18
+ end
19
+
20
+ puts app_group.find_applications_by_app_name(name).map{ |app| app.pid.pid }.join("\n")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module MongoMailer
2
+ VERSION = "0.1.3"
3
+ end
data/log/.gitkeep ADDED
File without changes
data/mongo_mailer.gemspec CHANGED
@@ -1,32 +1,31 @@
1
- Gem::Specification.new do |spec|
2
- spec.name = 'mongo_mailer'
3
- spec.version = '0.0.0'
4
- spec.authors = ['Krzysztof Knapik']
5
- spec.email = ['knapo@knapo.net']
1
+ # encoding: utf-8
2
+ require File.expand_path('../lib/mongo_mailer/version', __FILE__)
6
3
 
7
- spec.summary = 'Sending emails asynchronously with mongodb'
8
- spec.homepage = 'https://github.com/knapo/'
9
- spec.license = 'MIT'
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ['Krzysztof Knapik', 'inFakt DevTeam']
6
+ gem.email = ['knapo@knapo.net', 'devteam@infakt.pl']
7
+ gem.description = %q{Rails plugin for sending asynchronous email with mongodb}
8
+ gem.summary = %q{Rails plugin for sending asynchronous email with mongodb}
9
+ gem.homepage = 'https://github.com/infakt/mongo_mailer'
10
+ gem.license = 'MIT'
10
11
 
11
- spec.metadata['homepage_uri'] = 'https://github.com/knapo/'
12
- spec.metadata['source_code_uri'] = 'https://github.com/knapo/'
12
+ gem.files = `git ls-files`.split($\)
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(spec)/})
15
+ gem.name = 'mongo_mailer'
16
+ gem.require_paths = ['lib']
13
17
 
14
- spec.files = Dir.chdir(__dir__) do
15
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin/|spec/|test_app/|\.rub)}) }
16
- end
17
- spec.bindir = 'exe'
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ['lib']
18
+ gem.add_dependency 'activesupport', '>= 4.2.8'
19
+ gem.add_dependency 'mail', '~> 2.5.5'
20
+ gem.add_dependency 'mongo', '~> 1.9.2'
21
+ gem.add_dependency 'bson_ext', '~> 1.9.2'
22
+ gem.add_dependency 'daemons', '~> 1.1.9'
20
23
 
21
- spec.required_ruby_version = '>= 2.7'
24
+ gem.add_development_dependency 'rake', '>= 10.0.4'
25
+ gem.add_development_dependency 'rspec', '>= 2.14.0'
26
+ gem.add_development_dependency 'coveralls'
27
+ gem.add_development_dependency 'actionmailer', '>= 4.2.8'
22
28
 
23
- spec.add_dependency 'mail'
24
- spec.add_dependency 'mongo', '~> 2.15'
25
-
26
- spec.add_development_dependency 'pry'
27
- spec.add_development_dependency 'rake'
28
- spec.add_development_dependency 'rspec'
29
- spec.add_development_dependency 'rubocop'
30
- spec.add_development_dependency 'rubocop-rake'
31
- spec.add_development_dependency 'rubocop-rspec'
29
+ gem.version = MongoMailer::VERSION
32
30
  end
31
+
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe MongoMailer::DeliveriesCounter do
4
+ subject { described_class.instance }
5
+
6
+ before(:all) {
7
+ described_class.instance.collection.drop
8
+ }
9
+
10
+ describe '#increment' do
11
+ before {
12
+ subject.increment(:base)
13
+ subject.increment(:base)
14
+ subject.increment(:emergency)
15
+ }
16
+ it {
17
+ expect(subject.by_type(:base)['value']).to eq(2)
18
+ expect(subject.by_type(:emergency)['value']).to eq(1)
19
+ expect(subject.all.size).to eq(2)
20
+ }
21
+ end
22
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe MongoMailer::MailQueue do
4
+ let(:mail) { Mail.new(from: 'joe@infakt.pl', to: 'joe@infakt.pl', subject: 'Hello', body: 'hello') }
5
+
6
+ let(:item1) { {encoded: mail.encoded, uuid: ::SecureRandom.hex} }
7
+ let(:item2) { {encoded: mail.encoded, uuid: ::SecureRandom.hex} }
8
+ let(:deliveries) { MongoMailer::DeliveryMethods::Test1Mailer.deliveries }
9
+
10
+ before {
11
+ subject.collection.remove
12
+ MongoMailer::DeliveryMethods::Test1Mailer.deliveries.clear
13
+ }
14
+
15
+ subject { described_class.instance }
16
+
17
+ describe '#get_oldest' do
18
+ before {
19
+ subject.collection.insert(item1)
20
+ sleep(0.01)
21
+ subject.collection.insert(item2)
22
+ }
23
+ after {
24
+ # clear queue
25
+ subject.get_oldest
26
+ }
27
+ specify {
28
+ expect(subject.get_oldest['uuid']).to eq(item1[:uuid])
29
+ }
30
+ end
31
+
32
+ describe '#find_and_deliver!' do
33
+ context 'with item in queue' do
34
+ before {
35
+ subject.collection.insert(item1)
36
+ subject.collection.insert(item2)
37
+ }
38
+ after {
39
+ # clear queue
40
+ subject.get_oldest
41
+ subject.get_oldest
42
+ }
43
+ context 'success' do
44
+ specify {
45
+ expect(subject.find_and_deliver!).to eq(true)
46
+ expect(deliveries.size).to eq(1)
47
+ }
48
+ end
49
+ context 'failure' do
50
+ before {
51
+ expect(MongoMailer::FinalDeliverer).to receive(:new).and_raise(ArgumentError.new)
52
+ }
53
+ specify {
54
+ expect(subject.find_and_deliver!).to eq(false)
55
+ expect(deliveries.size).to eq(0)
56
+ }
57
+ end
58
+ end
59
+ context 'without item in queue' do
60
+ context 'success' do
61
+ specify {
62
+ expect(subject.find_and_deliver!).to be_nil
63
+ expect(deliveries.size).to eq(0)
64
+ }
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe MongoMailer::Configuration do
4
+ describe '.lookup_delivery_method' do
5
+ subject { described_class.instance }
6
+ let(:delivery_method) { subject.lookup_delivery_method(type) }
7
+
8
+ context ":test1" do
9
+ let(:type) { :test1 }
10
+ it { expect(delivery_method).to be_kind_of(Class) }
11
+ end
12
+ context ":test2" do
13
+ let(:type) { :test2 }
14
+ it { expect(delivery_method).to be_kind_of(Class) }
15
+ end
16
+ context ":unknown" do
17
+ let(:type) { :unknown }
18
+ it { expect { subject.lookup_delivery_method(type) }.to raise_error('Unknown delivery method: unknown') }
19
+ end
20
+ end
21
+
22
+ describe '.full_daemon_options' do
23
+ subject { described_class.instance.full_daemon_options }
24
+ it { expect(subject).to be_present }
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ require File.expand_path('../../../spec_helper', __FILE__)
2
+
3
+ describe MongoMailer::FinalDeliverer do
4
+ let(:mail) { Mail.new(from: 'joe@infakt.pl', to: 'joe@infakt.pl', subject: 'Hello') }
5
+ let(:subject) { described_class.new(mail.encoded) }
6
+ let(:test1_mails) { MongoMailer::DeliveryMethods::Test1Mailer.deliveries }
7
+ let(:test2_mails) { MongoMailer::DeliveryMethods::Test2Mailer.deliveries }
8
+
9
+ after {
10
+ test1_mails.clear
11
+ test2_mails.clear
12
+ }
13
+
14
+ subject { described_class.new(mail) }
15
+
16
+ describe '#deliver!' do
17
+ context 'with successful base delivery' do
18
+ before {
19
+ allow_any_instance_of(MongoMailer::DeliveryMethods::Test2Mailer).to receive(:deliver!).never
20
+ expect(subject.counter).to receive(:increment).with(:base)
21
+ subject.deliver!
22
+ }
23
+ specify {
24
+ expect(test1_mails.size).to eq(1)
25
+ expect(test2_mails.size).to eq(0)
26
+ }
27
+ end
28
+ context 'with failure base delivery' do
29
+ before {
30
+ allow_any_instance_of(MongoMailer::DeliveryMethods::Test1Mailer).to receive(:deliver!).and_raise(ArgumentError)
31
+ expect(subject.counter).to receive(:increment).with(:emergency)
32
+ subject.deliver!
33
+ }
34
+ specify {
35
+ expect(test1_mails.size).to eq(0)
36
+ expect(test2_mails.size).to eq(1)
37
+ }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ require File.expand_path('../../../spec_helper', __FILE__)
3
+ require 'mongo_mailer/rails'
4
+
5
+ ActionMailer::Base.delivery_method = :mongo_queue
6
+
7
+ class SampleMailer < ActionMailer::Base
8
+ def sample
9
+ opts = {
10
+ from: "system@infakt.kielbasa",
11
+ to: "joe@infakt.kielbasa",
12
+ subject: "Sample Mailer Kiełbasa Test"
13
+ }
14
+ mail(opts) do |format|
15
+ format.html { render :text => "Kiełbasa - #{Time.now}" }
16
+ end
17
+ end
18
+ end
19
+
20
+ describe MongoMailer::DeliveryMethods::MongoQueue do
21
+ before(:all) {
22
+ MongoMailer::MailQueue.collection_name = "mongo_queue_#{SecureRandom.hex}"
23
+ }
24
+ describe '#deliver!' do
25
+ let(:sent_mail1_id) { SampleMailer.sample.deliver_now! }
26
+ let(:sent_mail2_id) { SampleMailer.sample.deliver_now! }
27
+ specify {
28
+ expect(sent_mail1_id).to be_kind_of(BSON::ObjectId)
29
+ expect(sent_mail2_id).to be_kind_of(BSON::ObjectId)
30
+ expect(MongoMailer::MailQueue.instance.get_oldest['_id']).to eq(sent_mail1_id)
31
+ }
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ])
8
+ SimpleCov.start do
9
+ add_filter '/spec/'
10
+ end
11
+
12
+ require 'rubygems'
13
+
14
+ ENV["RAILS_ENV"] = ENV["APP_ENV"] = 'test'
15
+
16
+ require File.expand_path("../../config/boot", __FILE__)
17
+
18
+ RSpec.configure do |config|
19
+ config.order = "random"
20
+ #config.color_enabled = true
21
+
22
+ config.before(:suite) do
23
+ drop_db
24
+ end
25
+ end
26
+
27
+ def drop_db
28
+ MongoMailer::Configuration.instance.mongodb.command(dropDatabase: 1)
29
+ end
metadata CHANGED
@@ -1,101 +1,116 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Knapik
8
- autorequire:
9
- bindir: exe
8
+ - inFakt DevTeam
9
+ autorequire:
10
+ bindir: bin
10
11
  cert_chain: []
11
- date: 2021-07-23 00:00:00.000000000 Z
12
+ date: 2017-07-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: mail
15
+ name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
- version: '0'
20
+ version: 4.2.8
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - ">="
25
26
  - !ruby/object:Gem::Version
26
- version: '0'
27
+ version: 4.2.8
28
+ - !ruby/object:Gem::Dependency
29
+ name: mail
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 2.5.5
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.5.5
27
42
  - !ruby/object:Gem::Dependency
28
43
  name: mongo
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
46
  - - "~>"
32
47
  - !ruby/object:Gem::Version
33
- version: '2.15'
48
+ version: 1.9.2
34
49
  type: :runtime
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
53
  - - "~>"
39
54
  - !ruby/object:Gem::Version
40
- version: '2.15'
55
+ version: 1.9.2
41
56
  - !ruby/object:Gem::Dependency
42
- name: pry
57
+ name: bson_ext
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
- - - ">="
60
+ - - "~>"
46
61
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
62
+ version: 1.9.2
63
+ type: :runtime
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
- - - ">="
67
+ - - "~>"
53
68
  - !ruby/object:Gem::Version
54
- version: '0'
69
+ version: 1.9.2
55
70
  - !ruby/object:Gem::Dependency
56
- name: rake
71
+ name: daemons
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - ">="
74
+ - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
76
+ version: 1.1.9
77
+ type: :runtime
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - ">="
81
+ - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '0'
83
+ version: 1.1.9
69
84
  - !ruby/object:Gem::Dependency
70
- name: rspec
85
+ name: rake
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
88
  - - ">="
74
89
  - !ruby/object:Gem::Version
75
- version: '0'
90
+ version: 10.0.4
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
95
  - - ">="
81
96
  - !ruby/object:Gem::Version
82
- version: '0'
97
+ version: 10.0.4
83
98
  - !ruby/object:Gem::Dependency
84
- name: rubocop
99
+ name: rspec
85
100
  requirement: !ruby/object:Gem::Requirement
86
101
  requirements:
87
102
  - - ">="
88
103
  - !ruby/object:Gem::Version
89
- version: '0'
104
+ version: 2.14.0
90
105
  type: :development
91
106
  prerelease: false
92
107
  version_requirements: !ruby/object:Gem::Requirement
93
108
  requirements:
94
109
  - - ">="
95
110
  - !ruby/object:Gem::Version
96
- version: '0'
111
+ version: 2.14.0
97
112
  - !ruby/object:Gem::Dependency
98
- name: rubocop-rake
113
+ name: coveralls
99
114
  requirement: !ruby/object:Gem::Requirement
100
115
  requirements:
101
116
  - - ">="
@@ -109,40 +124,71 @@ dependencies:
109
124
  - !ruby/object:Gem::Version
110
125
  version: '0'
111
126
  - !ruby/object:Gem::Dependency
112
- name: rubocop-rspec
127
+ name: actionmailer
113
128
  requirement: !ruby/object:Gem::Requirement
114
129
  requirements:
115
130
  - - ">="
116
131
  - !ruby/object:Gem::Version
117
- version: '0'
132
+ version: 4.2.8
118
133
  type: :development
119
134
  prerelease: false
120
135
  version_requirements: !ruby/object:Gem::Requirement
121
136
  requirements:
122
137
  - - ">="
123
138
  - !ruby/object:Gem::Version
124
- version: '0'
125
- description:
139
+ version: 4.2.8
140
+ description: Rails plugin for sending asynchronous email with mongodb
126
141
  email:
127
142
  - knapo@knapo.net
128
- executables: []
143
+ - devteam@infakt.pl
144
+ executables:
145
+ - console
146
+ - mongo_mailer
147
+ - worker
129
148
  extensions: []
130
149
  extra_rdoc_files: []
131
150
  files:
132
151
  - ".gitignore"
152
+ - ".travis.yml"
133
153
  - Gemfile
134
154
  - Gemfile.lock
135
- - LICENSE
155
+ - README.md
136
156
  - Rakefile
157
+ - bin/console
158
+ - bin/mongo_mailer
159
+ - bin/worker
160
+ - config/boot.rb
161
+ - config/mongo_mailer.yml.example
162
+ - lib/generators/mongo_mailer/mongo_mailer_generator.rb
163
+ - lib/generators/mongo_mailer/templates/mongo_mailer.yml
137
164
  - lib/mongo_mailer.rb
165
+ - lib/mongo_mailer/capistrano.rb
166
+ - lib/mongo_mailer/capistrano3.rb
167
+ - lib/mongo_mailer/common/deliveries_counter.rb
168
+ - lib/mongo_mailer/common/has_mongo_collection.rb
169
+ - lib/mongo_mailer/common/mail_queue.rb
170
+ - lib/mongo_mailer/configuration.rb
171
+ - lib/mongo_mailer/core_ext/hash.rb
172
+ - lib/mongo_mailer/delivery_methods/mongo_queue.rb
173
+ - lib/mongo_mailer/delivery_methods/test.rb
174
+ - lib/mongo_mailer/rails.rb
175
+ - lib/mongo_mailer/standalone.rb
176
+ - lib/mongo_mailer/standalone/final_deliverer.rb
177
+ - lib/mongo_mailer/standalone/worker.rb
178
+ - lib/mongo_mailer/version.rb
179
+ - log/.gitkeep
138
180
  - mongo_mailer.gemspec
139
- homepage: https://github.com/knapo/
181
+ - spec/lib/common/deliveries_counter_spec.rb
182
+ - spec/lib/common/mail_queue_spec.rb
183
+ - spec/lib/configuration_spec.rb
184
+ - spec/lib/standalone/final_deliverer_spec.rb
185
+ - spec/rails/delivery_methods/mongo_queue_spec.rb
186
+ - spec/spec_helper.rb
187
+ homepage: https://github.com/infakt/mongo_mailer
140
188
  licenses:
141
189
  - MIT
142
- metadata:
143
- homepage_uri: https://github.com/knapo/
144
- source_code_uri: https://github.com/knapo/
145
- post_install_message:
190
+ metadata: {}
191
+ post_install_message:
146
192
  rdoc_options: []
147
193
  require_paths:
148
194
  - lib
@@ -150,15 +196,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
196
  requirements:
151
197
  - - ">="
152
198
  - !ruby/object:Gem::Version
153
- version: '2.7'
199
+ version: '0'
154
200
  required_rubygems_version: !ruby/object:Gem::Requirement
155
201
  requirements:
156
202
  - - ">="
157
203
  - !ruby/object:Gem::Version
158
204
  version: '0'
159
205
  requirements: []
160
- rubygems_version: 3.2.23
161
- signing_key:
206
+ rubyforge_project:
207
+ rubygems_version: 2.6.11
208
+ signing_key:
162
209
  specification_version: 4
163
- summary: Sending emails asynchronously with mongodb
164
- test_files: []
210
+ summary: Rails plugin for sending asynchronous email with mongodb
211
+ test_files:
212
+ - spec/lib/common/deliveries_counter_spec.rb
213
+ - spec/lib/common/mail_queue_spec.rb
214
+ - spec/lib/configuration_spec.rb
215
+ - spec/lib/standalone/final_deliverer_spec.rb
216
+ - spec/rails/delivery_methods/mongo_queue_spec.rb
217
+ - spec/spec_helper.rb