simple_postmark 0.5.1 → 0.5.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.
@@ -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.