mailcannon 0.1.0.pre.1 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81d99b16a82ec2314d0e8326bc3c2f93eed2fc03
4
- data.tar.gz: 248dba656dc1d563a28bc4384e8566be3a986fa5
3
+ metadata.gz: 4acfbc79ce867041aa1926d5bb0512f0dd7b1c3c
4
+ data.tar.gz: f5ab84274ad16ce8f4666af4a30fd6a7717ccc7a
5
5
  SHA512:
6
- metadata.gz: cf38c7f8ad0596607206f3b69d953f0da7736eee72b271f65736138c3fd4958c2e894ab5cbc1292b975100d88ff9343b3bc06083af0476ec4e77e8e9bbe1064c
7
- data.tar.gz: 15135c7aa6a189aff2ce6243123a1d0b8ff68d35f043790db63547167905609245f2b85ba0df1176807bc8605deb85a5f61894e1b841e2d73c0dcc466964bfac
6
+ metadata.gz: 3ed1607ac090774e6b74864308a20af693178a753c73f4ee624f148a386085fd885b1fab8a0bed5a9d815517c7f57fb618a68fe7e9d04bca3034aa75c7e10f87
7
+ data.tar.gz: 42baaf87765890631ea0fbc5d49d4b57c4c9b563d56850db336d8c5bd95f09faab02eb4594be2f69691c64a7c6084de223d09f612ff8568c4bd81e1ae9cce45f
@@ -9,12 +9,3 @@ $ . ./env.sh # will load your dev env vars.
9
9
  ```
10
10
 
11
11
  I miss Pry when I'm on [Rubinius](http://rubini.us/), so I do write the code on MRI and test on Rubinius once in a while. You will find that [Travis](https://travis-ci.org/) is your friend.
12
-
13
- # Roadmap
14
-
15
- - Rake task for creating all the indexes;
16
- - Routing core;
17
- - MapReduce for campaign deliverability statistics;
18
- - Sidekiq recurrent job to run updates on MapReduce;
19
- - Load testing;
20
- - Stats Reports - (readonly) JSON HTTP API;
data/LICENSE ADDED
@@ -0,0 +1,5 @@
1
+ Copyright (c) Lucas N Martins
2
+
3
+ MailCannon is an Open Source project licensed under the terms of
4
+ the LGPLv3 license. Please see <http://www.gnu.org/licenses/lgpl-3.0.html>
5
+ for license text.
data/Readme.md CHANGED
@@ -1,18 +1,24 @@
1
- [![Gem version](https://badge.fury.io/rb/mailcannon.png)](http://rubygems.org/gems/mailcannon) [![Code Climate](https://codeclimate.com/github/lucasmartins/mailcannon.png)](https://codeclimate.com/github/lucasmartins/mailcannon) [![Build Status](https://travis-ci.org/lucasmartins/mailcannon.png?branch=master)](https://travis-ci.org/lucasmartins/mailcannon) [![Coverage Status](https://coveralls.io/repos/lucasmartins/mailcannon/badge.png)](https://coveralls.io/r/lucasmartins/mailcannon) [![Dependency Status](https://gemnasium.com/lucasmartins/mailcannon.png)](https://gemnasium.com/lucasmartins/mailcannon) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/lucasmartins/mailcannon/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
1
+ [![Gem version](https://badge.fury.io/rb/mailcannon.png)](http://rubygems.org/gems/mailcannon) [![Code Climate](https://codeclimate.com/github/mailcannon/mailcannon.png)](https://codeclimate.com/github/mailcannon/mailcannon) [![Build Status](https://travis-ci.org/mailcannon/mailcannon.png?branch=master)](https://travis-ci.org/mailcannon/mailcannon) [![Coverage Status](https://coveralls.io/repos/lucasmartins/mailcannon/badge.png)](https://coveralls.io/r/mailcannon/mailcannon) [![Dependency Status](https://gemnasium.com/mailcannon/mailcannon.png)](https://gemnasium.com/mailcannon/mailcannon) [![Inline docs](http://inch-pages.github.io/github/mailcannon/mailcannon.png)](http://inch-pages.github.io/github/mailcannon/mailcannon) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mailcannon/mailcannon/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
2
2
 
3
3
  ![MailCannon_logo](http://blog.railsnapraia.com/images/mailcannon_seal_128.png)
4
4
 
5
5
  MailCannon
6
6
  ==========
7
7
 
8
- Although this is a **WORK IN PROGRESS**, we're getting great results on **production** at [Resultados Digitais](http://resultadosdigitais.com.br/).
8
+ Although this is a **WORK IN PROGRESS**, we're getting great results at **production** environments.
9
9
 
10
- This Gem relies heavily on both [Sidekiq](https://github.com/mperham/sidekiq) and Celluloid Gems, you are encouraged to use it anywhere with Ruby (a http interface is on the Roadmap ).
10
+ This Gem relies heavily on [Sidekiq](https://github.com/mperham/sidekiq), you are encouraged to use it anywhere with Ruby (a http interface is on the Roadmap ). You REALLY should buy [Sidekiq's Pro](http://sidekiq.org/pro/) license for serious deployments, check it out.
11
11
 
12
12
  This Gem provides a worker ready for deploy cooked with [MongoDB](http://www.mongodb.org/) + [Mongoid](https://github.com/mongoid/mongoid) + [Sidekiq](https://github.com/mperham/sidekiq) + [Rubinius](http://rubini.us/) (feel free to use on MRI and jRuby as well).
13
13
 
14
14
  For production deployment, you should take a look at both [MailCannon Outpost](https://github.com/lucasmartins/mailcannon-outpost) and [MailCannon Monitor](https://github.com/lucasmartins/mailcannon-monitor) projects.
15
15
 
16
+ Changelog
17
+ ========
18
+
19
+ ### 1.1
20
+ - Added retry to barrel
21
+
16
22
  Install
17
23
  =======
18
24
 
@@ -113,7 +119,6 @@ You can trigger the reduce operation directly with `envelope.reduce_statistics`.
113
119
 
114
120
  Repeating events on the same target will increase the array: `"click"=>{"count"=>3.0, "targets"=>["3","3","3"]}`
115
121
 
116
-
117
122
  Docs
118
123
  ====
119
124
  You should check the [factories](https://github.com/lucasmartins/mailcannon/tree/master/spec/factories) to learn what you need to build your objects, and the [tests](https://github.com/lucasmartins/mailcannon/tree/master/spec/mailcannon) to learn how to use them. But hey, we have docs [right here](http://rdoc.info/github/lucasmartins/mailcannon/master/frames).
@@ -121,15 +126,15 @@ You should check the [factories](https://github.com/lucasmartins/mailcannon/tree
121
126
  Roadmap
122
127
  =======
123
128
 
124
- - Statistics (Map&Reduce awesomeness);
129
+ - Load testing;
130
+ - Webhook service to receive Sendgrid events;
125
131
  - Memory optimization (focused on MailCannon Outpost);
126
132
  - HTTP (webservice) interface - so you don't need to be coding Ruby to use it!;
127
- - New service adapter (Mandrill?);
128
133
 
129
134
  Contribute
130
135
  ==========
131
136
 
132
- Just fork [MailCannon](https://github.com/lucasmartins/mailcannon), add your feature+spec, and make a pull request. Do not mess up with the version file though.
137
+ Just fork [MailCannon](https://github.com/lucasmartins/mailcannon), add your feature+spec, and make a pull request. **DO NOT** mess up with the version file though.
133
138
 
134
139
  **NOTICE**: The project is at embrionary stage, breaking changes will apply.
135
140
 
@@ -141,4 +146,4 @@ This is an opensource project so don't expect premium support, but don't be shy,
141
146
  License
142
147
  =======
143
148
 
144
- MailCannon is free software under the [FreeBSD license](http://www.freebsd.org/copyright/freebsd-license.html).
149
+ Please see [LICENSE](https://github.com/lucasmartins/mailcannon/blob/master/LICENSE) for licensing details.
@@ -27,7 +27,7 @@ module MailCannon::Adapter::SendgridWeb
27
27
  begin
28
28
  self.auth || self.envelope_bag.auth || default_auth
29
29
  rescue Exception => e
30
- logger.error "Unable to read auth config from Envelope or Bag, using default auth options from ENV"
30
+ logger.warn "Unable to read auth config from Envelope or Bag, using default auth options from ENV"
31
31
  return default_auth
32
32
  end
33
33
  end
@@ -3,8 +3,8 @@ module MailCannon
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
- PATCH = 0
7
- ALPHA = '.pre.1'
6
+ PATCH = 1
7
+ ALPHA = nil # ex: '.pre.1'
8
8
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}#{ALPHA}"
9
9
  end
10
10
  end
@@ -1,7 +1,7 @@
1
1
  # This worker handles Envelopes dispatch
2
2
  class MailCannon::Barrel
3
3
  include Sidekiq::Worker
4
-
4
+
5
5
  def perform(envelope_id)
6
6
  envelope_id = envelope_id['$oid'] if envelope_id['$oid']
7
7
  shoot!(envelope_id)
@@ -20,8 +20,10 @@ class MailCannon::Barrel
20
20
  end
21
21
  rescue Mongoid::Errors::DocumentNotFound
22
22
  logger.error "unable to find the document MailCannon::Envelope.find('#{envelope_id}')"
23
+ raise Mongoid::Errors::DocumentNotFound
23
24
  rescue Exception => e
24
- logger.error "unable to send MailCannon::Envelope.find('#{envelope_id}') #{e.backtrace}"
25
+ logger.error "unable to send MailCannon::Envelope.find('#{envelope_id}') #{e} #{e.backtrace}"
26
+ raise e
25
27
  end
26
28
  end
27
- end
29
+ end
@@ -21,7 +21,7 @@ FactoryGirl.define do
21
21
 
22
22
  factory :envelope_multi_1k, class: MailCannon::Envelope do
23
23
  mails = []
24
- source = 'lucasmartins+#@railsnapraia.com'
24
+ source = 'mailcannon+#@sink.sendgrid.net'
25
25
  1000.times.each do |i|
26
26
  mails.push source.gsub('#',i.to_s)
27
27
  end
@@ -22,3 +22,15 @@ describe "shoot 1k emails!" do
22
22
  end
23
23
  end
24
24
  end
25
+
26
+ if ENV['SENDGRID_PASSWORD'] && !ENV['CI']
27
+ describe "shoot 1k real (@sink) emails!" do
28
+ let!(:envelope_a) { build(:envelope_multi_1k) }
29
+ it "sends http request for Sendgrid web API" do
30
+ Sidekiq::Testing.inline! do
31
+ envelope_a.post!
32
+ expect(envelope_a.reload.processed?).to be_true
33
+ end
34
+ end
35
+ end
36
+ end
@@ -12,7 +12,7 @@ describe MailCannon::Barrel do
12
12
  it "looks for an existing MongoDB document" do
13
13
  VCR.use_cassette('mailcannon_barrel_envelope_post') do
14
14
  Sidekiq::Testing.inline! do
15
- expect{envelope.post!}.not_to raise_error(Mongoid::Errors::DocumentNotFound)
15
+ expect{envelope.post!}.not_to raise_error
16
16
  end
17
17
  end
18
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailcannon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Martins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-05 00:00:00.000000000 Z
11
+ date: 2014-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -266,10 +266,11 @@ files:
266
266
  - .ruby-version
267
267
  - .travis.yml
268
268
  - .yardopts
269
+ - Contributors.md
269
270
  - Gemfile
271
+ - LICENSE
270
272
  - Rakefile
271
273
  - Readme.md
272
- - ReadmeContributors.md
273
274
  - config/locales/en.yml
274
275
  - config/locales/pt-BR.yml
275
276
  - env.sample.sh
@@ -298,6 +299,7 @@ files:
298
299
  - spec/factories/stamp.rb
299
300
  - spec/fixtures/cassettes/mailcannon_adapter_sendgrid_send.yml
300
301
  - spec/fixtures/cassettes/mailcannon_adapter_sendgrid_send_bulk.yml
302
+ - spec/fixtures/cassettes/mailcannon_barrel_envelope_post.yml
301
303
  - spec/fixtures/cassettes/mailcannon_integration_1k.yml
302
304
  - spec/integration/1k_spec.rb
303
305
  - spec/integration/full_stack_stats_spec.rb
@@ -330,12 +332,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
330
332
  version: 1.9.3
331
333
  required_rubygems_version: !ruby/object:Gem::Requirement
332
334
  requirements:
333
- - - '>'
335
+ - - '>='
334
336
  - !ruby/object:Gem::Version
335
- version: 1.3.1
337
+ version: '0'
336
338
  requirements: []
337
339
  rubyforge_project:
338
- rubygems_version: 2.0.14
340
+ rubygems_version: 2.1.11
339
341
  signing_key:
340
342
  specification_version: 4
341
343
  summary: A mass mailing tool for real threads aficionados
@@ -345,6 +347,7 @@ test_files:
345
347
  - spec/factories/stamp.rb
346
348
  - spec/fixtures/cassettes/mailcannon_adapter_sendgrid_send.yml
347
349
  - spec/fixtures/cassettes/mailcannon_adapter_sendgrid_send_bulk.yml
350
+ - spec/fixtures/cassettes/mailcannon_barrel_envelope_post.yml
348
351
  - spec/fixtures/cassettes/mailcannon_integration_1k.yml
349
352
  - spec/integration/1k_spec.rb
350
353
  - spec/integration/full_stack_stats_spec.rb