simple_postmark 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,7 @@ language: ruby
3
3
  rvm:
4
4
  - 1.9.2
5
5
  - 1.9.3
6
+ - 2.0.0
6
7
  - ruby-head
7
8
 
8
9
  gemfile:
@@ -1,3 +1,10 @@
1
+ ## 0.5.2 (May 11, 2013)
2
+ * Some refactoring.
3
+ * Ruby 2.0 support!
4
+ * Rails 4.pre support! Thank you @frodsan! :)
5
+ * Updated README.md: simple_postmark will die… someday! :(
6
+ * Fixed some problems: #8 and #10.
7
+
1
8
  ## 0.5.1 (December 21, 2012)
2
9
 
3
10
  * Prepared for gem-release.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
data/README.md CHANGED
@@ -1,12 +1,19 @@
1
- # simple_postmark
1
+ # simple_postmark [![Build Status](https://travis-ci.org/haihappen/simple_postmark.png)](https://travis-ci.org/haihappen/simple_postmark)
2
2
 
3
- SimplePostmark makes it easy to send mails via [Postmark](http://postmarkapp.com)™ using Rails 3's ActionMailer.
4
- SimplePostmark is inspired by [postmark-gem](https://github.com/wildbit/postmark-gem), but unfortunately postmark-gem forced to me to use non-standard Rails calls like `postmark_attachments`. SimplePostmark uses the standard Rails 3's ActionMailer syntax to send your emails via Postmark.
3
+ simple_postmark makes it easy to send mails via [Postmark](http://postmarkapp.com)™ using Rails's ActionMailer.
4
+
5
+ ~~simple_postmark is inspired by [postmark-gem](https://github.com/wildbit/postmark-gem), but unfortunately postmark-gem forced to me to use non-standard Rails calls like `postmark_attachments`. simple_postmark uses the standard Rails's ActionMailer syntax to send your emails via Postmark.~~
6
+
7
+ ---
8
+
9
+ **Update:** It seems that the [issue](https://github.com/wildbit/postmark-rails/issues/17#issuecomment-13761405) was fixed in the `0.9.19` version of the [postmark gem](https://github.com/wildbit/postmark-gem), which marks this gem as obligatory. However I have not decided what to do, so simple_postmark will still be there for a while. At least until Rails `4.0` is released.
10
+
11
+ ---
5
12
 
6
13
  Tested against Ruby versions `1.9.2`, `1.9.3` and Rails versions `3.0.x`, `3.1.x`, `3.2.x`.
7
- `ruby-head` (a.k.a. Ruby `2.0`) and Rails `master` (upcoming Rails `4.0`) should work too btw.
14
+ `ruby-head`, `2.0` and Rails `master` should work too btw.
8
15
 
9
- If you are still using Ruby `1.8.7` or `Ruby Enterprise Edition` with Rails 3, you can use the backported version of this gem called [simple_postmark18](https://github.com/haihappen/simple_postmark/tree/ruby18).
16
+ If you are still using Ruby `1.8.7` or `Ruby Enterprise Edition` with Rails, you can use the backported version of this gem called [simple_postmark18](https://github.com/haihappen/simple_postmark/tree/ruby18).
10
17
 
11
18
  ## Installation
12
19
 
@@ -27,7 +34,7 @@ config.action_mailer.simple_postmark_settings = { api_key: '********-****-****-*
27
34
 
28
35
  ## Usage
29
36
 
30
- Just use your standard Rails 3 Mailer:
37
+ Just use your standard Rails Mailer:
31
38
 
32
39
  ```ruby
33
40
  class NotificationMailer < ActionMailer::Base
@@ -101,7 +108,7 @@ With this setup, it will actually trigger a connection to the Postmark API, but
101
108
 
102
109
  (The MIT license)
103
110
 
104
- Copyright (c) 2011-2012 Mario Uher
111
+ Copyright (c) 2011-2013 Mario Uher
105
112
 
106
113
  Permission is hereby granted, free of charge, to any person obtaining
107
114
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,8 +1,7 @@
1
- require 'rake'
2
1
  require 'rake/testtask'
3
2
 
4
3
  Rake::TestTask.new do |t|
5
- t.test_files = Dir.glob('spec/**/*_spec.rb')
4
+ t.test_files = FileList['spec/**/*_spec.rb']
6
5
  end
7
6
 
8
- task(default: :test)
7
+ task default: :test
@@ -1,5 +1,5 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rails', '~> 3.0.0'
5
+ gem 'rails', '~> 3.0.0'
@@ -1,5 +1,5 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rails', '~> 3.1.0'
5
+ gem 'rails', '~> 3.1.0'
@@ -1,5 +1,5 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rails', '~> 3.2.0'
5
+ gem 'rails', '~> 3.2.0'
@@ -1,7 +1,6 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gem 'activesupport', github: 'rails/rails'
4
- gem 'activerecord-deprecated_finders', github: 'rails/activerecord-deprecated_finders'
5
4
  gem 'httparty'
6
5
  gem 'json'
7
6
  gem 'mail'
@@ -1,5 +1,4 @@
1
- require 'active_support/core_ext/object/blank'
2
- require 'active_support/inflector/methods'
1
+ require 'active_support/core_ext'
3
2
  require 'httparty'
4
3
  require 'json'
5
4
  require 'mail'
@@ -12,4 +11,4 @@ module SimplePostmark
12
11
  require 'simple_postmark/api_error'
13
12
 
14
13
  require 'simple_postmark/railtie' if defined?(Rails)
15
- end
14
+ end
@@ -4,4 +4,4 @@ module SimplePostmark
4
4
  super(response.parsed_response['Message'])
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -1,19 +1,16 @@
1
1
  module Mail
2
- class SimplePostmark
2
+ class SimplePostmark < Struct.new(:settings)
3
3
  include HTTParty
4
4
 
5
- def initialize(values)
6
- self.settings = { api_key: '********-****-****-****-************' }.merge(values)
7
- end
8
-
9
- attr_accessor :settings
10
5
  base_uri 'http://api.postmarkapp.com'
11
6
  headers 'Accept' => 'application/json', 'ContentType' => 'application/json'
7
+ delegate :post, :headers, to: self
12
8
 
13
9
  def deliver!(mail)
14
- api_key = { 'X-Postmark-Server-Token' => settings[:api_key].to_s }
15
-
16
- response = self.class.post('/email', headers: self.class.headers.merge(api_key), body: mail.to_postmark.to_json)
10
+ headers = self.headers.merge('X-Postmark-Server-Token' => settings[:api_key].to_s)
11
+ body = mail.to_postmark.to_json
12
+
13
+ response = post('/email', headers: headers, body: body)
17
14
  raise ::SimplePostmark::APIError.new(response) unless response.success?
18
15
  response
19
16
  end
@@ -8,4 +8,4 @@ module Mail
8
8
  end
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module SimplePostmark
2
- class Railtie < ::Rails::Railtie
3
- ActionMailer::Base.add_delivery_method(:simple_postmark, Mail::SimplePostmark, api_key: nil)
2
+ class Railtie < Rails::Railtie
3
+ ActionMailer::Base.add_delivery_method :simple_postmark, Mail::SimplePostmark, api_key: nil
4
4
  end
5
- end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module SimplePostmark
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
@@ -1,23 +1,24 @@
1
- require './lib/simple_postmark/version'
1
+ $: << File.expand_path('../lib', __FILE__)
2
+ require 'simple_postmark/version'
2
3
 
3
4
  Gem::Specification.new do |gem|
4
5
  gem.name = 'simple_postmark'
5
6
  gem.version = SimplePostmark::VERSION
6
7
  gem.authors = 'Mario Uher'
7
8
  gem.email = 'uher.mario@gmail.com'
8
- gem.description = 'SimplePostmark makes it easy to send mails via Postmark™ using Rails 3\'s ActionMailer.'
9
+ gem.description = 'SimplePostmark makes it easy to send mails via Postmark™ using Rails\'s ActionMailer.'
9
10
  gem.summary = 'A simple way to use Postmark™ with your Rails app.'
10
11
  gem.homepage = 'http://haihappen.github.com/simple_postmark'
11
12
 
12
13
  gem.files = `git ls-files`.split("\n")
13
14
  gem.require_path = 'lib'
14
15
 
15
- gem.add_dependency 'activesupport', '~> 3.0'
16
+ gem.add_dependency 'activesupport', '>= 3.0'
16
17
  gem.add_dependency 'httparty'
17
18
  gem.add_dependency 'json'
18
19
  gem.add_dependency 'mail'
19
20
 
20
- gem.add_development_dependency 'minitest'
21
- gem.add_development_dependency 'rails', '~> 3.0'
21
+ gem.add_development_dependency 'minitest', '~> 4.0'
22
+ gem.add_development_dependency 'rails', '>= 3.0'
22
23
  gem.add_development_dependency 'webmock'
23
24
  end
@@ -1,8 +1,8 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require_relative 'spec_helper'
2
2
 
3
3
  describe Mail do
4
4
  describe SimplePostmark do
5
- let(:instance) { Mail::SimplePostmark.new({}) }
5
+ let(:instance) { Mail::SimplePostmark.new }
6
6
 
7
7
 
8
8
  it 'responds to deliver!' do
@@ -27,21 +27,18 @@ describe Mail do
27
27
  before do
28
28
  mail.delivery_method(Mail::SimplePostmark)
29
29
  stub_request(:post, url)
30
+ mail.deliver
30
31
  end
31
32
 
32
33
 
33
34
  it 'sends emails' do
34
- mail.deliver
35
-
36
35
  assert_requested(:post, url)
37
36
  end
38
37
 
39
38
 
40
39
  it 'sends appropriate headers' do
41
- mail.deliver
42
-
43
- assert_requested(:post, url, headers: { 'Accept' => 'application/json', 'ContentType' => 'application/json', 'X-Postmark-Server-Token' => '********-****-****-****-************' })
40
+ assert_requested(:post, url, headers: { 'Accept' => 'application/json', 'ContentType' => 'application/json', 'X-Postmark-Server-Token' => '' })
44
41
  end
45
42
  end
46
43
  end
47
- end
44
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require_relative 'spec_helper'
2
2
  require 'action_mailer'
3
3
  require 'rails'
4
4
  require 'simple_postmark/railtie'
@@ -1,4 +1,4 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
1
+ require_relative '../spec_helper'
2
2
 
3
3
  describe Mail::Message do
4
4
  describe 'integration into Mail::Message' do
@@ -1,4 +1,4 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
1
+ require_relative '../spec_helper'
2
2
 
3
3
  describe 'Mail::Part' do
4
4
  describe 'integration into Mail::Part' do
@@ -1,4 +1,4 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ require_relative 'spec_helper'
2
2
  require 'action_mailer'
3
3
  require 'rails'
4
4
  require 'simple_postmark/railtie'
@@ -9,11 +9,11 @@ class NotificationMailer < ActionMailer::Base
9
9
  default from: 'barney@himym.tld', to: 'ted@himym.tld'
10
10
 
11
11
  def im_your_bro
12
- mail(subject: "I'm your bro!")
12
+ mail(subject: "I'm your bro!", body: '')
13
13
  end
14
14
 
15
15
  def im_your_bro_tagged
16
- mail(subject: "I'm your bro!", tag: 'simple-postmark')
16
+ mail(subject: "I'm your bro!", tag: 'simple-postmark', body: '')
17
17
  end
18
18
 
19
19
  def im_your_bro_multipart
@@ -25,7 +25,7 @@ class NotificationMailer < ActionMailer::Base
25
25
 
26
26
  def the_bro_code
27
27
  attachments['thebrocode.jpg'] = File.read(File.join(File.dirname(__FILE__), 'thebrocode.jpg'))
28
- mail(subject: 'The Brocode!')
28
+ mail(subject: 'The Brocode!', body: '')
29
29
  end
30
30
  end
31
31
 
@@ -66,7 +66,7 @@ describe ActionMailer::Base do
66
66
 
67
67
  it 'allows setting an api key' do
68
68
  ActionMailer::Base.simple_postmark_settings = { api_key: api_key }
69
-
69
+
70
70
  ActionMailer::Base.simple_postmark_settings[:api_key].must_equal(api_key)
71
71
  end
72
72
 
@@ -79,14 +79,14 @@ describe ActionMailer::Base do
79
79
 
80
80
  it 'works' do
81
81
  NotificationMailer.im_your_bro.deliver
82
-
82
+
83
83
  assert_requested(:post, url, headers: headers, body: merge_body)
84
84
  end
85
85
 
86
86
 
87
87
  it 'allows tags' do
88
88
  NotificationMailer.im_your_bro_tagged.deliver
89
-
89
+
90
90
  assert_requested(:post, url, headers: headers, body: merge_body('Tag' => 'simple-postmark'))
91
91
  end
92
92
 
@@ -97,9 +97,9 @@ describe ActionMailer::Base do
97
97
  'ContentType' => 'image/jpeg',
98
98
  'Name' => 'thebrocode.jpg'
99
99
  }
100
-
100
+
101
101
  NotificationMailer.the_bro_code.deliver
102
-
102
+
103
103
  assert_requested(:post, url, headers: headers, body: merge_body('Subject' => 'The Brocode!', 'Attachments' => [attachment]))
104
104
  end
105
105
 
@@ -109,10 +109,10 @@ describe ActionMailer::Base do
109
109
  'HtmlBody' => "<p>Think of me like Yoda, but instead of being little and green I wear suits and I'm awesome.<br /><br />I'm your bro-I'm Broda!</p>",
110
110
  'TextBody' => "Think of me like Yoda, but instead of being little and green I wear suits and I'm awesome. I'm your bro-I'm Broda!"
111
111
  }
112
-
112
+
113
113
  NotificationMailer.im_your_bro_multipart.deliver
114
-
114
+
115
115
  assert_requested(:post, url, headers: headers, body: merge_body(bodies))
116
116
  end
117
117
  end
118
- end
118
+ end
@@ -1,7 +1,9 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
1
+ $: << File.expand_path('../../lib', __FILE__)
2
2
 
3
3
  require 'minitest/autorun'
4
4
  require 'minitest/pride'
5
5
  require 'minitest/spec'
6
+
6
7
  require 'simple_postmark'
8
+
7
9
  require 'webmock/minitest'
metadata CHANGED
@@ -2,41 +2,41 @@
2
2
  name: simple_postmark
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.1
5
+ version: 0.5.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mario Uher
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-21 00:00:00.000000000 Z
12
+ date: 2013-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ prerelease: false
15
16
  version_requirements: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - ~>
18
+ - - ! '>='
18
19
  - !ruby/object:Gem::Version
19
20
  version: '3.0'
20
21
  none: false
21
- name: activesupport
22
22
  type: :runtime
23
- prerelease: false
23
+ name: activesupport
24
24
  requirement: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ~>
26
+ - - ! '>='
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.0'
29
29
  none: false
30
30
  - !ruby/object:Gem::Dependency
31
+ prerelease: false
31
32
  version_requirements: !ruby/object:Gem::Requirement
32
33
  requirements:
33
34
  - - ! '>='
34
35
  - !ruby/object:Gem::Version
35
36
  version: '0'
36
37
  none: false
37
- name: httparty
38
38
  type: :runtime
39
- prerelease: false
39
+ name: httparty
40
40
  requirement: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,15 +44,15 @@ dependencies:
44
44
  version: '0'
45
45
  none: false
46
46
  - !ruby/object:Gem::Dependency
47
+ prerelease: false
47
48
  version_requirements: !ruby/object:Gem::Requirement
48
49
  requirements:
49
50
  - - ! '>='
50
51
  - !ruby/object:Gem::Version
51
52
  version: '0'
52
53
  none: false
53
- name: json
54
54
  type: :runtime
55
- prerelease: false
55
+ name: json
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ! '>='
@@ -60,15 +60,15 @@ dependencies:
60
60
  version: '0'
61
61
  none: false
62
62
  - !ruby/object:Gem::Dependency
63
+ prerelease: false
63
64
  version_requirements: !ruby/object:Gem::Requirement
64
65
  requirements:
65
66
  - - ! '>='
66
67
  - !ruby/object:Gem::Version
67
68
  version: '0'
68
69
  none: false
69
- name: mail
70
70
  type: :runtime
71
- prerelease: false
71
+ name: mail
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,55 +76,55 @@ dependencies:
76
76
  version: '0'
77
77
  none: false
78
78
  - !ruby/object:Gem::Dependency
79
+ prerelease: false
79
80
  version_requirements: !ruby/object:Gem::Requirement
80
81
  requirements:
81
- - - ! '>='
82
+ - - ~>
82
83
  - !ruby/object:Gem::Version
83
- version: '0'
84
+ version: '4.0'
84
85
  none: false
85
- name: minitest
86
86
  type: :development
87
- prerelease: false
87
+ name: minitest
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - ! '>='
90
+ - - ~>
91
91
  - !ruby/object:Gem::Version
92
- version: '0'
92
+ version: '4.0'
93
93
  none: false
94
94
  - !ruby/object:Gem::Dependency
95
+ prerelease: false
95
96
  version_requirements: !ruby/object:Gem::Requirement
96
97
  requirements:
97
- - - ~>
98
+ - - ! '>='
98
99
  - !ruby/object:Gem::Version
99
100
  version: '3.0'
100
101
  none: false
101
- name: rails
102
102
  type: :development
103
- prerelease: false
103
+ name: rails
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - ~>
106
+ - - ! '>='
107
107
  - !ruby/object:Gem::Version
108
108
  version: '3.0'
109
109
  none: false
110
110
  - !ruby/object:Gem::Dependency
111
+ prerelease: false
111
112
  version_requirements: !ruby/object:Gem::Requirement
112
113
  requirements:
113
114
  - - ! '>='
114
115
  - !ruby/object:Gem::Version
115
116
  version: '0'
116
117
  none: false
117
- name: webmock
118
118
  type: :development
119
- prerelease: false
119
+ name: webmock
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ! '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  none: false
126
- description: SimplePostmark makes it easy to send mails via Postmark™ using Rails
127
- 3's ActionMailer.
126
+ description: SimplePostmark makes it easy to send mails via Postmark™ using Rails's
127
+ ActionMailer.
128
128
  email: uher.mario@gmail.com
129
129
  executables: []
130
130
  extensions: []
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
175
  none: false
176
176
  requirements: []
177
177
  rubyforge_project:
178
- rubygems_version: 1.8.23
178
+ rubygems_version: 1.8.25
179
179
  signing_key:
180
180
  specification_version: 3
181
181
  summary: A simple way to use Postmark™ with your Rails app.