stripe_event 2.1.1 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a52368767b30c28e92ebf64e7ff30612ac619290ad20e68bbfe722df08d4692b
4
- data.tar.gz: c59ec530c237cee41067a6f66cdd10d5f3be759e4f661b48656aeb8d0cb508e3
3
+ metadata.gz: 9e8bf3dc8abec723bb2c3278c725f754bbe7cd991f868a8854ff04bac7bc778f
4
+ data.tar.gz: 46b48dae96008e8e9f27c8d7e39aa5a022614d322f2a60845b249dd862cec82b
5
5
  SHA512:
6
- metadata.gz: 0cef390de99616809fc7da580e9447420a6b78048618339a0352e2df485a98239d7bac00b19d2a9fcb2ec68312b2dbc7c5a7fb724b7ecdef53008aed5f857c1d
7
- data.tar.gz: 6878b61c5766dd21346cb633e7ad85797bf6b0aae9fbf63f612cfe279f3aaf34b784e0e940dc5014cd8224c2925f4a7081a7bce1458a491a91567dad100c2490
6
+ metadata.gz: 56defdead871efd3c089a19db8382ded54786d7c899a39b6245e4b6c69e3a0a8379e792794aeb7bdbc9615f82ce107a528ea8953ac6c9a8d86c8ccd27a0e80a4
7
+ data.tar.gz: a91a63ef969c4e7cebac2ce7c083923a6d74cd3cfc166ea914c0956a3108edfc7591be179b44aa8fd10ce43dd8a4ec57119545f745f6a910f492b7c9ffcc98eb
@@ -0,0 +1,37 @@
1
+ name: CI
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ ruby: ["2.5", "2.6", "2.7"]
10
+ bundler: [default]
11
+ gemfile:
12
+ - rails5.1
13
+ - rails5.2
14
+ - rails6.0
15
+ - rails6.1
16
+ - stripe3
17
+ - stripe4
18
+ - stripe5
19
+ include:
20
+ - { ruby: "2.3", gemfile: "rails3.2", bundler: "1" }
21
+ - { ruby: "2.3", gemfile: "rails4.2", bundler: "1" }
22
+ - { ruby: "2.4", gemfile: "rails4.2", bundler: "1" }
23
+
24
+ env:
25
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
26
+ steps:
27
+ # https://github.com/marketplace/actions/checkout
28
+ - uses: actions/checkout@v2
29
+ # https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
30
+ - name: Set up Ruby
31
+ uses: ruby/setup-ruby@v1
32
+ with:
33
+ ruby-version: ${{ matrix.ruby }}
34
+ bundler: ${{ matrix.bundler }}
35
+ bundler-cache: true # runs `bundle install` and caches gems automatically
36
+ - name: Run tests
37
+ run: bundle exec rake
data/Appraisals CHANGED
@@ -12,7 +12,27 @@ appraise "rails5.1" do
12
12
  end
13
13
 
14
14
  appraise "rails5.2" do
15
- gem "rails", ">= 5.2.0.rc1", "< 5.3"
15
+ gem "rails", "~> 5.2.0"
16
+ end
17
+
18
+ appraise "rails6.0" do
19
+ gem "rails", "~> 6.0.0"
20
+ end
21
+
22
+ appraise "rails6.1" do
23
+ gem "rails", "~> 6.1.0"
24
+ end
25
+
26
+ appraise "stripe3" do
27
+ gem "stripe", "~> 3.0"
28
+ end
29
+
30
+ appraise "stripe4" do
31
+ gem "stripe", "~> 4.0"
32
+ end
33
+
34
+ appraise "stripe5" do
35
+ gem "stripe", "~> 5.0"
16
36
  end
17
37
 
18
38
  appraise "rails_master" do
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ ### 2.3.2 (February 21, 2022)
2
+
3
+ - Fix signature validation error if the first signing secret is nil (#146)
4
+ - Update README (#143)
5
+ - Setup github actions for CI (#147)
6
+
7
+ ### 2.3.1 (May 12, 2020)
8
+
9
+ - Fix deprecation warning in Ruby 2.7 (#130)
10
+ - Fixes tests for Stripe 5.19.0 (#133)
11
+
12
+ ### 2.3.0 (August 23, 2019)
13
+
14
+ - Add support for Stripe v5.x (#119)
15
+ - Add support for Rails v6.x to the build matrix (#119)
16
+
17
+ ### 2.2.0 (December 6, 2018)
18
+
19
+ - Add support for Stripe v4.x (#119)
20
+ - Documentation Updates and Fixes (#113 and #117)
21
+
22
+ ### 2.1.1 (January 31, 2018)
23
+
24
+ - Adds better support for Rails 5.2 (#105, #106, #107)
25
+ - `StripeEvent::WebhookController` now calls `skip_before_action :verify_authenticity_token` if `Rails.application.config.action_controller.default_protect_from_forgery` is set (as it is by default in Rails 5.2)
26
+
27
+ ### 2.1.0 (yanked)
28
+
1
29
  ### 2.0.0 (December 14, 2017)
2
30
 
3
31
  **Backwards incompatible release. [Signed webhooks are now required.](https://stripe.com/docs/webhooks#signatures).**
data/README.md CHANGED
@@ -1,13 +1,12 @@
1
1
  # StripeEvent
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/integrallis/stripe_event.svg)](http://travis-ci.org/integrallis/stripe_event)
4
- [![Dependency Status](https://gemnasium.com/integrallis/stripe_event.svg)](https://gemnasium.com/integrallis/stripe_event)
3
+ [![Build Status](https://github.com/integrallis/stripe_event/workflows/CI/badge.svg)](https://github.com/integrallis/stripe_event/actions?query=workflow%3ACI)
5
4
  [![Gem Version](https://badge.fury.io/rb/stripe_event.svg)](http://badge.fury.io/rb/stripe_event)
6
5
  [![Code Climate](https://codeclimate.com/github/integrallis/stripe_event.svg)](https://codeclimate.com/github/integrallis/stripe_event)
7
6
  [![Coverage Status](https://coveralls.io/repos/integrallis/stripe_event/badge.svg)](https://coveralls.io/r/integrallis/stripe_event)
8
7
  [![Gem Downloads](https://img.shields.io/gem/dt/stripe_event.svg)](https://rubygems.org/gems/stripe_event)
9
8
 
10
- StripeEvent is built on the [ActiveSupport::Notifications API](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html). Incoming webhook requests are authenticated by [retrieving the event object](https://stripe.com/docs/api?lang=ruby#retrieve_event) from Stripe. Define subscribers to handle specific event types. Subscribers can be a block or an object that responds to `#call`.
9
+ StripeEvent is built on the [ActiveSupport::Notifications API](http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html). Incoming webhook requests are [authenticated with the webhook signature](#authenticating-webhooks-with-signatures). Define subscribers to handle specific event types. Subscribers can be a block or an object that responds to `#call`.
11
10
 
12
11
  ## Install
13
12
 
@@ -81,7 +80,7 @@ end
81
80
 
82
81
  ### Authenticating webhooks with signatures
83
82
 
84
- Stripe will cryptographically sign webhook payloads with a signature that is included in a special header sent with the request. Verifying this signature lets your application properly authenticate the request originated from Stripe. To leverage this feature, please set the `signing_secret` configuration value:
83
+ Stripe will cryptographically sign webhook payloads with a signature that is included in a special header sent with the request. Verifying this signature lets your application properly authenticate the request originated from Stripe. **As of [v2.0.0](https://github.com/integrallis/stripe_event/releases/tag/v2.0.0), StripeEvent now mandates that this feature be used**. Please set the `signing_secret` configuration value:
85
84
 
86
85
  ```ruby
87
86
  StripeEvent.signing_secret = Rails.application.secrets.stripe_signing_secret
@@ -106,13 +105,6 @@ StripeEvent.signing_secrets = [
106
105
 
107
106
  If you have built an application that has multiple Stripe accounts--say, each of your customers has their own--you may want to define your own way of retrieving events from Stripe (e.g. perhaps you want to use the [account parameter](https://stripe.com/docs/connect/webhooks) from the top level to detect the customer for the event, then grab their specific API key). You can do this:
108
107
 
109
- ```ruby
110
- StripeEvent.event_filter = lambda do |event|
111
- api_key = Account.find_by!(stripe_account_id: event.account).api_key
112
- Stripe::Event.retrieve(event.id, api_key)
113
- end
114
- ```
115
-
116
108
  ```ruby
117
109
  class EventFilter
118
110
  def call(event)
@@ -173,11 +165,11 @@ end
173
165
 
174
166
  ## Testing
175
167
 
176
- Handling webhooks is a critical piece of modern billing systems. Verifying the behavior of StripeEvent subscribers can be done fairly easily by stubbing out the HTTP signature header used to authenticate the webhook request. Tools like [Webmock](https://github.com/bblimke/webmock) and [VCR](https://github.com/vcr/vcr) work well. [RequestBin](http://requestb.in/) is great for collecting the payloads. For exploratory phases of development, [UltraHook](http://www.ultrahook.com/) and other tools can forward webhook requests directly to localhost. You can check out [test-hooks](https://github.com/invisiblefunnel/test-hooks), an example Rails application to see how to test StripeEvent subscribers with RSpec request specs and Webmock. A quick look:
168
+ Handling webhooks is a critical piece of modern billing systems. Verifying the behavior of StripeEvent subscribers can be done fairly easily by stubbing out the HTTP signature header used to authenticate the webhook request. Tools like [Webmock](https://github.com/bblimke/webmock) and [VCR](https://github.com/vcr/vcr) work well. [RequestBin](https://requestbin.com/) is great for collecting the payloads. For exploratory phases of development, [UltraHook](http://www.ultrahook.com/) and other tools can forward webhook requests directly to localhost. You can check out [test-hooks](https://github.com/invisiblefunnel/test-hooks), an example Rails application to see how to test StripeEvent subscribers with RSpec request specs and Webmock. A quick look:
177
169
 
178
170
  ```ruby
179
171
  # spec/requests/billing_events_spec.rb
180
- require 'spec_helper'
172
+ require 'rails_helper'
181
173
 
182
174
  describe "Billing Events" do
183
175
  def bypass_event_signature(payload)
@@ -186,12 +178,12 @@ describe "Billing Events" do
186
178
  end
187
179
 
188
180
  describe "customer.created" do
189
- let(:payload) { File.read("spec/support/fixtures/evt_customer_created.json")
190
- before(:each) { bypass_event_signature payload }
181
+ let(:payload) { file_fixture('evt_customer_created.json').read }
182
+ before(:each) { bypass_event_signature(payload) }
191
183
 
192
184
  it "is successful" do
193
- post '/_billing_events', body: payload
194
- expect(response.code).to eq "200"
185
+ post '/_billing_events', params: payload
186
+ expect(response).to have_http_status(:success)
195
187
  # Additional expectations...
196
188
  end
197
189
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", ">= 5.2.0.rc1", "< 5.3"
5
+ gem "rails", "~> 5.2.0"
6
6
 
7
7
  gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.1.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "stripe", "~> 3.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "stripe", "~> 4.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "stripe", "~> 5.0"
6
+
7
+ gemspec path: "../"
@@ -1,3 +1,3 @@
1
1
  module StripeEvent
2
- VERSION = "2.1.1"
2
+ VERSION = "2.3.2"
3
3
  end
data/lib/stripe_event.rb CHANGED
@@ -18,11 +18,13 @@ module StripeEvent
18
18
  backend.instrument namespace.call(event.type), event if event
19
19
  end
20
20
 
21
- def subscribe(name, callable = Proc.new)
21
+ def subscribe(name, callable = nil, &block)
22
+ callable ||= block
22
23
  backend.subscribe namespace.to_regexp(name), adapter.call(callable)
23
24
  end
24
25
 
25
- def all(callable = Proc.new)
26
+ def all(callable = nil, &block)
27
+ callable ||= block
26
28
  subscribe nil, callable
27
29
  end
28
30
 
@@ -32,7 +34,7 @@ module StripeEvent
32
34
  end
33
35
 
34
36
  def signing_secret=(value)
35
- @signing_secrets = Array(value)
37
+ @signing_secrets = Array(value).compact
36
38
  end
37
39
  alias signing_secrets= signing_secret=
38
40
 
@@ -12,16 +12,25 @@ describe StripeEvent::WebhookController, type: :controller do
12
12
 
13
13
  def generate_signature(params, secret)
14
14
  payload = params.to_json
15
- timestamp = Time.now.to_i
16
- signature = Stripe::Webhook::Signature.send(:compute_signature, "#{timestamp}.#{payload}", secret)
17
-
18
- "t=#{timestamp},v1=#{signature}"
15
+ timestamp = Time.now
16
+
17
+ # compute_signature was private until version 5.19.0 when it was made
18
+ # public and had it's API changed to split timestamp to a separate field.
19
+ signer = Stripe::Webhook::Signature.method(:compute_signature)
20
+ signature =
21
+ if signer.arity == 3
22
+ signer.call(timestamp, payload, secret)
23
+ else
24
+ signer.call("#{timestamp.to_i}.#{payload}", secret)
25
+ end
26
+
27
+ "t=#{timestamp.to_i},v1=#{signature}"
19
28
  end
20
29
 
21
30
  def webhook(signature, params)
22
31
  request.env['HTTP_STRIPE_SIGNATURE'] = signature
23
32
  request.env['RAW_POST_DATA'] = params.to_json # works with Rails 3, 4, or 5
24
- post :event
33
+ post :event, body: params.to_json
25
34
  end
26
35
 
27
36
  def webhook_with_signature(params, secret = secret1)
@@ -123,4 +132,18 @@ describe StripeEvent::WebhookController, type: :controller do
123
132
  expect(response.code).to eq '200'
124
133
  end
125
134
  end
135
+
136
+ context "with multiple signing secrets first of which is nil" do
137
+ before(:each) { StripeEvent.signing_secrets = [nil, secret1, secret2] }
138
+
139
+ it "succeeds with valid signature from first secret" do
140
+ webhook_with_signature charge_succeeded, secret1
141
+ expect(response.code).to eq '200'
142
+ end
143
+
144
+ it "succeeds with valid signature from second secret" do
145
+ webhook_with_signature charge_succeeded, secret2
146
+ expect(response.code).to eq '200'
147
+ end
148
+ end
126
149
  end
data/stripe_event.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- $:.push File.expand_path("../lib", __FILE__)
1
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
2
2
 
3
3
  # Maintain your gem's version:
4
4
  require "stripe_event/version"
@@ -18,12 +18,12 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- Appraisals {spec,gemfiles}/*`.split("\n")
19
19
 
20
20
  s.add_dependency "activesupport", ">= 3.1"
21
- s.add_dependency "stripe", [">= 2.8", "< 4.0"]
21
+ s.add_dependency "stripe", [">= 2.8", "< 6"]
22
22
 
23
+ s.add_development_dependency "appraisal"
24
+ s.add_development_dependency "coveralls"
23
25
  s.add_development_dependency "rails", [">= 3.1"]
24
- s.add_development_dependency "rake", "< 11.0"
26
+ s.add_development_dependency "rake"
25
27
  s.add_development_dependency "rspec-rails", "~> 3.7"
26
28
  s.add_development_dependency "webmock", "~> 1.9"
27
- s.add_development_dependency "appraisal"
28
- s.add_development_dependency "coveralls"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe_event
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Whalen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-31 00:00:00.000000000 Z
11
+ date: 2022-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -33,7 +33,7 @@ dependencies:
33
33
  version: '2.8'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
- version: '4.0'
36
+ version: '6'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,100 +43,100 @@ dependencies:
43
43
  version: '2.8'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
- version: '4.0'
46
+ version: '6'
47
47
  - !ruby/object:Gem::Dependency
48
- name: rails
48
+ name: appraisal
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '3.1'
53
+ version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '3.1'
60
+ version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: rake
62
+ name: coveralls
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "<"
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '11.0'
67
+ version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "<"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '11.0'
74
+ version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
- name: rspec-rails
76
+ name: rails
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '3.7'
81
+ version: '3.1'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '3.7'
88
+ version: '3.1'
89
89
  - !ruby/object:Gem::Dependency
90
- name: webmock
90
+ name: rake
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '1.9'
95
+ version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '1.9'
102
+ version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: appraisal
104
+ name: rspec-rails
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">="
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '3.7'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">="
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '3.7'
117
117
  - !ruby/object:Gem::Dependency
118
- name: coveralls
118
+ name: webmock
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
121
+ - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0'
123
+ version: '1.9'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - ">="
128
+ - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: '1.9'
131
131
  description: Stripe webhook integration for Rails applications.
132
132
  email: daniel.r.whalen@gmail.com
133
133
  executables: []
134
134
  extensions: []
135
135
  extra_rdoc_files: []
136
136
  files:
137
+ - ".github/workflows/ci.yml"
137
138
  - ".gitignore"
138
139
  - ".rspec"
139
- - ".travis.yml"
140
140
  - Appraisals
141
141
  - CHANGELOG.md
142
142
  - CONTRIBUTING.md
@@ -150,7 +150,12 @@ files:
150
150
  - gemfiles/rails4.2.gemfile
151
151
  - gemfiles/rails5.1.gemfile
152
152
  - gemfiles/rails5.2.gemfile
153
+ - gemfiles/rails6.0.gemfile
154
+ - gemfiles/rails6.1.gemfile
153
155
  - gemfiles/rails_master.gemfile
156
+ - gemfiles/stripe3.gemfile
157
+ - gemfiles/stripe4.gemfile
158
+ - gemfiles/stripe5.gemfile
154
159
  - lib/stripe_event.rb
155
160
  - lib/stripe_event/engine.rb
156
161
  - lib/stripe_event/version.rb
@@ -211,8 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
216
  - !ruby/object:Gem::Version
212
217
  version: '0'
213
218
  requirements: []
214
- rubyforge_project:
215
- rubygems_version: 2.7.0
219
+ rubygems_version: 3.3.7
216
220
  signing_key:
217
221
  specification_version: 4
218
222
  summary: Stripe webhook integration for Rails applications.
@@ -222,7 +226,12 @@ test_files:
222
226
  - gemfiles/rails4.2.gemfile
223
227
  - gemfiles/rails5.1.gemfile
224
228
  - gemfiles/rails5.2.gemfile
229
+ - gemfiles/rails6.0.gemfile
230
+ - gemfiles/rails6.1.gemfile
225
231
  - gemfiles/rails_master.gemfile
232
+ - gemfiles/stripe3.gemfile
233
+ - gemfiles/stripe4.gemfile
234
+ - gemfiles/stripe5.gemfile
226
235
  - spec/controllers/webhook_controller_spec.rb
227
236
  - spec/dummy/README.rdoc
228
237
  - spec/dummy/Rakefile
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- sudo: false
4
-
5
- rvm:
6
- - 2.3.6
7
- - 2.4.3
8
- - 2.5.0
9
-
10
- gemfile:
11
- - gemfiles/rails4.2.gemfile
12
- - gemfiles/rails5.1.gemfile
13
- - gemfiles/rails5.2.gemfile
14
- - gemfiles/rails_master.gemfile
15
-
16
- matrix:
17
- include:
18
- - rvm: 2.3.6
19
- gemfile: gemfiles/rails3.2.gemfile
20
- allow_failures:
21
- - gemfile: gemfiles/rails_master.gemfile
22
- fast_finish: true
23
-
24
- notifications:
25
- email:
26
- - daniel.r.whalen+travis-ci@gmail.com