rollbar 3.0.0 → 3.2.0
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 +4 -4
- data/.github/workflows/ci.yml +118 -0
- data/.rubocop.yml +1 -1
- data/Gemfile +14 -7
- data/README.md +1 -1
- data/data/rollbar.snippet.js +1 -1
- data/gemfiles/rails30.gemfile +8 -11
- data/gemfiles/rails31.gemfile +10 -12
- data/gemfiles/rails32.gemfile +8 -11
- data/gemfiles/rails40.gemfile +7 -11
- data/gemfiles/rails41.gemfile +7 -11
- data/gemfiles/rails42.gemfile +5 -11
- data/gemfiles/rails50.gemfile +7 -12
- data/gemfiles/rails51.gemfile +7 -12
- data/gemfiles/rails52.gemfile +3 -10
- data/gemfiles/rails60.gemfile +5 -17
- data/gemfiles/rails61.gemfile +54 -0
- data/lib/rollbar/capistrano_tasks.rb +22 -4
- data/lib/rollbar/configuration.rb +10 -0
- data/lib/rollbar/item.rb +17 -4
- data/lib/rollbar/item/locals.rb +0 -1
- data/lib/rollbar/lazy_store.rb +2 -4
- data/lib/rollbar/middleware/js.rb +28 -18
- data/lib/rollbar/notifier.rb +5 -1
- data/lib/rollbar/plugins/sidekiq.rb +1 -1
- data/lib/rollbar/plugins/sidekiq/plugin.rb +36 -19
- data/lib/rollbar/plugins/thread.rb +8 -7
- data/lib/rollbar/scrubbers/url.rb +15 -1
- data/lib/rollbar/version.rb +1 -1
- metadata +5 -4
- data/.travis.yml +0 -268
@@ -157,8 +157,7 @@ module Rollbar
|
|
157
157
|
def script_tag(content, env)
|
158
158
|
if (nonce = rails5_nonce(env))
|
159
159
|
script_tag_content = "\n<script type=\"text/javascript\" nonce=\"#{nonce}\">#{content}</script>"
|
160
|
-
elsif secure_headers_nonce
|
161
|
-
nonce = ::SecureHeaders.content_security_policy_script_nonce(::Rack::Request.new(env))
|
160
|
+
elsif (nonce = secure_headers_nonce(env))
|
162
161
|
script_tag_content = "\n<script type=\"text/javascript\" nonce=\"#{nonce}\">#{content}</script>"
|
163
162
|
else
|
164
163
|
script_tag_content = "\n<script type=\"text/javascript\">#{content}</script>"
|
@@ -172,29 +171,40 @@ module Rollbar
|
|
172
171
|
string
|
173
172
|
end
|
174
173
|
|
175
|
-
# Rails 5.2 Secure Content Policy
|
174
|
+
# Rails 5.2+ Secure Content Policy
|
176
175
|
def rails5_nonce(env)
|
177
|
-
|
178
|
-
|
179
|
-
# Rails will
|
180
|
-
#
|
181
|
-
#
|
182
|
-
|
176
|
+
req = ::ActionDispatch::Request.new(env)
|
177
|
+
|
178
|
+
# Rails will only return a nonce if the app has set a nonce generator.
|
179
|
+
# So if we get a valid nonce here, we know we should use it.
|
180
|
+
#
|
181
|
+
# Having both 'unsafe-inline' and a nonce is a valid and preferred
|
182
|
+
# browser compatibility configuration.
|
183
|
+
#
|
184
|
+
# If the script_src key is missing, Rails will not add the nonce to the headers,
|
185
|
+
# so we detect this and will not add it in this case.
|
183
186
|
req.respond_to?(:content_security_policy) &&
|
184
187
|
req.content_security_policy &&
|
185
188
|
req.content_security_policy.directives['script-src'] &&
|
186
|
-
!req.content_security_policy.directives['script-src'].include?("'unsafe-inline'") &&
|
187
189
|
req.content_security_policy_nonce
|
188
190
|
end
|
189
191
|
|
190
192
|
# Secure Headers gem
|
191
|
-
def secure_headers_nonce
|
192
|
-
|
193
|
+
def secure_headers_nonce(env)
|
194
|
+
req = ::Rack::Request.new(env)
|
195
|
+
|
196
|
+
return unless secure_headers(req).append_nonce?
|
197
|
+
|
198
|
+
::SecureHeaders.content_security_policy_script_nonce(req)
|
193
199
|
end
|
194
200
|
|
195
|
-
def secure_headers
|
201
|
+
def secure_headers(req)
|
196
202
|
return SecureHeadersFalse.new unless defined?(::SecureHeaders::Configuration)
|
197
203
|
|
204
|
+
# If the nonce key has been set, the app is using nonces for this request.
|
205
|
+
# If it hasn't, we shouldn't cause one to be added to script_src, so return now.
|
206
|
+
return SecureHeadersFalse.new unless secure_headers_nonce_key(req)
|
207
|
+
|
198
208
|
config = ::SecureHeaders::Configuration
|
199
209
|
|
200
210
|
secure_headers_cls = nil
|
@@ -212,6 +222,10 @@ module Rollbar
|
|
212
222
|
secure_headers_cls.new
|
213
223
|
end
|
214
224
|
|
225
|
+
def secure_headers_nonce_key(req)
|
226
|
+
defined?(::SecureHeaders::NONCE_KEY) && req.env[::SecureHeaders::NONCE_KEY]
|
227
|
+
end
|
228
|
+
|
215
229
|
class SecureHeadersResolver
|
216
230
|
def append_nonce?
|
217
231
|
csp_needs_nonce?(find_csp)
|
@@ -224,16 +238,12 @@ module Rollbar
|
|
224
238
|
end
|
225
239
|
|
226
240
|
def csp_needs_nonce?(csp)
|
227
|
-
!opt_out?(csp)
|
241
|
+
!opt_out?(csp)
|
228
242
|
end
|
229
243
|
|
230
244
|
def opt_out?(_csp)
|
231
245
|
raise NotImplementedError
|
232
246
|
end
|
233
|
-
|
234
|
-
def unsafe_inline?(csp)
|
235
|
-
csp[:script_src].to_a.include?("'unsafe-inline'")
|
236
|
-
end
|
237
247
|
end
|
238
248
|
|
239
249
|
class SecureHeadersFalse < SecureHeadersResolver
|
data/lib/rollbar/notifier.rb
CHANGED
@@ -640,7 +640,11 @@ module Rollbar
|
|
640
640
|
request = Net::HTTP::Post.new(uri.request_uri)
|
641
641
|
|
642
642
|
request.body = pack_ruby260_bytes(body)
|
643
|
-
|
643
|
+
|
644
|
+
# Ensure the payload token will be used if the option is set.
|
645
|
+
unless (configuration.use_payload_access_token)
|
646
|
+
request.add_field('X-Rollbar-Access-Token', access_token)
|
647
|
+
end
|
644
648
|
|
645
649
|
handle_net_retries { http.request(request) }
|
646
650
|
end
|
@@ -9,7 +9,7 @@ Rollbar.plugins.define('sidekiq >= 3') do
|
|
9
9
|
|
10
10
|
Sidekiq.configure_server do |config|
|
11
11
|
config.server_middleware do |chain|
|
12
|
-
chain.add Rollbar::Sidekiq::
|
12
|
+
chain.add Rollbar::Sidekiq::ResetScope
|
13
13
|
end
|
14
14
|
|
15
15
|
config.error_handlers << proc do |e, context|
|
@@ -4,21 +4,39 @@ module Rollbar
|
|
4
4
|
class Sidekiq
|
5
5
|
PARAM_BLACKLIST = %w[backtrace error_backtrace error_message error_class].freeze
|
6
6
|
|
7
|
-
class
|
8
|
-
def call(_worker,
|
9
|
-
Rollbar.reset_notifier!
|
7
|
+
class ResetScope
|
8
|
+
def call(_worker, msg, _queue)
|
9
|
+
Rollbar.reset_notifier! # clears scope
|
10
10
|
|
11
|
-
yield
|
11
|
+
return yield unless Rollbar.configuration.sidekiq_use_scoped_block
|
12
|
+
|
13
|
+
Rollbar.scoped(Rollbar::Sidekiq.job_scope(msg)) { yield }
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
|
-
def self.handle_exception(
|
16
|
-
|
17
|
-
|
17
|
+
def self.handle_exception(msg, e)
|
18
|
+
return if skip_report?(msg, e)
|
19
|
+
|
20
|
+
Rollbar.scope(job_scope(msg)).error(e, :use_exception_level_filters => true)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.skip_report?(msg, _e)
|
24
|
+
job_hash = job_hash_from_msg(msg)
|
25
|
+
|
26
|
+
return false if job_hash.nil?
|
27
|
+
|
28
|
+
# when rollbar middleware catches, sidekiq's retry_job processor hasn't set
|
29
|
+
# the retry_count for the current job yet, so adding 1 gives the actual retry count
|
30
|
+
actual_retry_count = job_hash.fetch('retry_count', -1) + 1
|
31
|
+
job_hash['retry'] && actual_retry_count < ::Rollbar.configuration.sidekiq_threshold
|
32
|
+
end
|
18
33
|
|
34
|
+
def self.job_scope(msg)
|
19
35
|
scope = {
|
20
36
|
:framework => "Sidekiq: #{::Sidekiq::VERSION}"
|
21
37
|
}
|
38
|
+
job_hash = job_hash_from_msg(msg)
|
39
|
+
|
22
40
|
unless job_hash.nil?
|
23
41
|
params = job_hash.reject { |k| PARAM_BLACKLIST.include?(k) }
|
24
42
|
scope[:request] = { :params => scrub_params(params) }
|
@@ -26,7 +44,7 @@ module Rollbar
|
|
26
44
|
scope[:queue] = params['queue']
|
27
45
|
end
|
28
46
|
|
29
|
-
|
47
|
+
scope
|
30
48
|
end
|
31
49
|
|
32
50
|
def self.scrub_params(params)
|
@@ -38,22 +56,21 @@ module Rollbar
|
|
38
56
|
Rollbar::Scrubbers::Params.call(options)
|
39
57
|
end
|
40
58
|
|
41
|
-
|
42
|
-
return false if job_hash.nil?
|
43
|
-
|
44
|
-
# when rollbar middleware catches, sidekiq's retry_job processor hasn't set
|
45
|
-
# the retry_count for the current job yet, so adding 1 gives the actual retry count
|
46
|
-
actual_retry_count = job_hash.fetch('retry_count', -1) + 1
|
47
|
-
job_hash['retry'] && actual_retry_count < ::Rollbar.configuration.sidekiq_threshold
|
48
|
-
end
|
49
|
-
|
59
|
+
# see https://github.com/mperham/sidekiq/wiki/Middleware#server-middleware
|
50
60
|
def call(_worker, msg, _queue)
|
51
|
-
Rollbar.reset_notifier!
|
61
|
+
Rollbar.reset_notifier! # clears scope
|
52
62
|
|
53
|
-
yield
|
63
|
+
return yield unless Rollbar.configuration.sidekiq_use_scoped_block
|
64
|
+
|
65
|
+
Rollbar.scoped(Rollbar::Sidekiq.job_scope(msg)) { yield }
|
54
66
|
rescue Exception => e
|
55
67
|
Rollbar::Sidekiq.handle_exception(msg, e)
|
56
68
|
raise
|
57
69
|
end
|
70
|
+
|
71
|
+
def self.job_hash_from_msg(msg)
|
72
|
+
msg && (msg[:job] || msg)
|
73
|
+
end
|
74
|
+
private_class_method :job_hash_from_msg
|
58
75
|
end
|
59
76
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
Rollbar.plugins.define('thread') do
|
2
|
-
|
3
|
-
|
4
|
-
def
|
2
|
+
module Rollbar
|
3
|
+
module ThreadPlugin
|
4
|
+
def initialize(*args)
|
5
5
|
self[:_rollbar_notifier] ||= Rollbar.notifier.scope
|
6
|
-
|
6
|
+
super
|
7
7
|
end
|
8
|
-
|
9
|
-
alias_method :initialize_without_rollbar, :initialize
|
10
|
-
alias_method :initialize, :initialize_with_rollbar
|
11
8
|
end
|
12
9
|
end
|
10
|
+
|
11
|
+
execute do
|
12
|
+
Thread.send(:prepend, Rollbar::ThreadPlugin) # rubocop:disable Lint/SendWithMixinArgument
|
13
|
+
end
|
13
14
|
end
|
@@ -13,7 +13,7 @@ module Rollbar
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def call(options = {})
|
16
|
-
url = options[:url]
|
16
|
+
url = ascii_encode(options[:url])
|
17
17
|
|
18
18
|
filter(url,
|
19
19
|
build_regex(options[:scrub_fields]),
|
@@ -29,6 +29,20 @@ module Rollbar
|
|
29
29
|
|
30
30
|
private
|
31
31
|
|
32
|
+
def ascii_encode(url)
|
33
|
+
# In some cases non-ascii characters won't be properly encoded, so we do it here.
|
34
|
+
#
|
35
|
+
# The standard encoders (the CGI and URI methods) are not reliable when the query string
|
36
|
+
# is already embedded in the full URL, but the inconsistencies are limited to issues
|
37
|
+
# with characters in the ascii range. (For example, the '#' if it appears in an unexpected place.)
|
38
|
+
# For escaping non-ascii, they are all OK, so we'll take care to skip the ascii chars.
|
39
|
+
|
40
|
+
return url if url.ascii_only?
|
41
|
+
|
42
|
+
# Iterate each char and only escape non-ascii characters.
|
43
|
+
url.each_char.map { |c| c.ascii_only? ? c : CGI.escape(c) }.join
|
44
|
+
end
|
45
|
+
|
32
46
|
def build_whitelist_regex(whitelist)
|
33
47
|
fields = whitelist.find_all { |f| f.is_a?(String) || f.is_a?(Symbol) }
|
34
48
|
return unless fields.any?
|
data/lib/rollbar/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rollbar, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Easy and powerful exception tracking for Ruby
|
14
14
|
email:
|
@@ -20,10 +20,10 @@ extra_rdoc_files: []
|
|
20
20
|
files:
|
21
21
|
- ".codeclimate.yml"
|
22
22
|
- ".github/pull_request_template.md"
|
23
|
+
- ".github/workflows/ci.yml"
|
23
24
|
- ".gitignore"
|
24
25
|
- ".gitmodules"
|
25
26
|
- ".rubocop.yml"
|
26
|
-
- ".travis.yml"
|
27
27
|
- Appraisals
|
28
28
|
- CHANGELOG.md
|
29
29
|
- Gemfile
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- gemfiles/rails51.gemfile
|
48
48
|
- gemfiles/rails52.gemfile
|
49
49
|
- gemfiles/rails60.gemfile
|
50
|
+
- gemfiles/rails61.gemfile
|
50
51
|
- lib/generators/rollbar/rollbar_generator.rb
|
51
52
|
- lib/generators/rollbar/templates/initializer.rb
|
52
53
|
- lib/rails/rollbar_runner.rb
|
@@ -160,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
161
|
- !ruby/object:Gem::Version
|
161
162
|
version: '0'
|
162
163
|
requirements: []
|
163
|
-
rubygems_version: 3.1.
|
164
|
+
rubygems_version: 3.1.4
|
164
165
|
signing_key:
|
165
166
|
specification_version: 4
|
166
167
|
summary: Reports exceptions to Rollbar
|
data/.travis.yml
DELETED
@@ -1,268 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
dist: trusty
|
3
|
-
services:
|
4
|
-
- redis-server
|
5
|
-
language: ruby
|
6
|
-
|
7
|
-
rvm:
|
8
|
-
- 2.0.0
|
9
|
-
- 2.1.0
|
10
|
-
- 2.2.2
|
11
|
-
- 2.3.8
|
12
|
-
- 2.4.5
|
13
|
-
- 2.5.3
|
14
|
-
- 2.6.5
|
15
|
-
- 2.7.0
|
16
|
-
- rbx
|
17
|
-
# Travis's own rvm installer is failing on JRuby builds, TODO: reenable when fixed.
|
18
|
-
# - jruby-9.1.9.0
|
19
|
-
|
20
|
-
#
|
21
|
-
# # About legacy JRuby
|
22
|
-
#
|
23
|
-
# Legacy JRubies (jruby-18mode, jruby-19mode) have been disabled for some time by
|
24
|
-
# listing all possible targets in either the exclude or allow_failures sections.
|
25
|
-
# I have taken a look at getting them running, and have found that no valid
|
26
|
-
# combination of dependencies is possible for Rails 3.0 and higher. It appears
|
27
|
-
# Rails 2.2 is meant to work, though I haven't tried it.
|
28
|
-
#
|
29
|
-
# For Rails 3.0, it is possible to get a working bundle with all gem dependencies,
|
30
|
-
# but the JDBC adapter gem needs an earlier version of ActiveSupport, and it will
|
31
|
-
# fail at runtime.
|
32
|
-
#
|
33
|
-
# For Rails 3.1 and 3.2, Rack 1.3.x and higher require Ruby 2.x, while Rails 3.x will
|
34
|
-
# not accept any 1.2.x version of Rack. Even if this could be resolved, one would
|
35
|
-
# hit the above runtime issue amyway.
|
36
|
-
#
|
37
|
-
# # About current JRuby
|
38
|
-
#
|
39
|
-
# While current JRuby builds aim to be Ruby 2.5.x compatible, the JDBC adapter
|
40
|
-
# gem is constrained to only Rails 5.0, 5.1 and 5.2 at this time. (Old versions
|
41
|
-
# of the gem allow >= Rails 2.2, but in practice it will not work with Rails 3.0
|
42
|
-
# and higher because of the ActiveSupport issue described above.) For as long as
|
43
|
-
# the test suite relies on Rails and SqlLite, it is not possible to include
|
44
|
-
# earlier Rails for JRuby.
|
45
|
-
|
46
|
-
jdk:
|
47
|
-
# These are the JDKs currently supported on Travis (Trusty - Ubuntu 14.04)
|
48
|
-
- openjdk7
|
49
|
-
- openjdk8
|
50
|
-
- oraclejdk8
|
51
|
-
- oraclejdk9
|
52
|
-
gemfile:
|
53
|
-
- gemfiles/rails30.gemfile
|
54
|
-
- gemfiles/rails31.gemfile
|
55
|
-
- gemfiles/rails32.gemfile
|
56
|
-
- gemfiles/rails40.gemfile
|
57
|
-
- gemfiles/rails41.gemfile
|
58
|
-
- gemfiles/rails42.gemfile
|
59
|
-
- gemfiles/rails50.gemfile
|
60
|
-
- gemfiles/rails51.gemfile
|
61
|
-
- gemfiles/rails52.gemfile
|
62
|
-
- gemfiles/rails60.gemfile
|
63
|
-
matrix:
|
64
|
-
include: []
|
65
|
-
|
66
|
-
allow_failures:
|
67
|
-
- rvm: ruby-head
|
68
|
-
- rvm: jruby-head
|
69
|
-
# oraclejdk9 has a dependency issue that needs to be investigated
|
70
|
-
- jdk: oraclejdk9
|
71
|
-
|
72
|
-
exclude:
|
73
|
-
# Don't run tests for non-jruby environments with the JDK.
|
74
|
-
# NOTE: openjdk7 is missing from these exclusions so that Travis will run at least 1 build for the given rvm.
|
75
|
-
- rvm: 2.0.0
|
76
|
-
jdk: openjdk8
|
77
|
-
- rvm: 2.0.0
|
78
|
-
jdk: oraclejdk8
|
79
|
-
- rvm: 2.0.0
|
80
|
-
jdk: oraclejdk9
|
81
|
-
- rvm: 2.1.0
|
82
|
-
jdk: openjdk8
|
83
|
-
- rvm: 2.1.0
|
84
|
-
jdk: oraclejdk8
|
85
|
-
- rvm: 2.1.0
|
86
|
-
jdk: oraclejdk9
|
87
|
-
- rvm: 2.2.2
|
88
|
-
jdk: openjdk8
|
89
|
-
- rvm: 2.2.2
|
90
|
-
jdk: oraclejdk8
|
91
|
-
- rvm: 2.2.2
|
92
|
-
jdk: oraclejdk9
|
93
|
-
- rvm: 2.3.8
|
94
|
-
jdk: openjdk8
|
95
|
-
- rvm: 2.3.8
|
96
|
-
jdk: oraclejdk8
|
97
|
-
- rvm: 2.3.8
|
98
|
-
jdk: oraclejdk9
|
99
|
-
- rvm: 2.4.5
|
100
|
-
jdk: openjdk8
|
101
|
-
- rvm: 2.4.5
|
102
|
-
jdk: oraclejdk8
|
103
|
-
- rvm: 2.4.5
|
104
|
-
jdk: oraclejdk9
|
105
|
-
- rvm: 2.5.3
|
106
|
-
jdk: openjdk8
|
107
|
-
- rvm: 2.5.3
|
108
|
-
jdk: oraclejdk8
|
109
|
-
- rvm: 2.5.3
|
110
|
-
jdk: oraclejdk9
|
111
|
-
- rvm: 2.6.5
|
112
|
-
jdk: openjdk8
|
113
|
-
- rvm: 2.6.5
|
114
|
-
jdk: oraclejdk8
|
115
|
-
- rvm: 2.6.5
|
116
|
-
jdk: oraclejdk9
|
117
|
-
- rvm: 2.7.0
|
118
|
-
jdk: openjdk8
|
119
|
-
- rvm: 2.7.0
|
120
|
-
jdk: oraclejdk8
|
121
|
-
- rvm: 2.7.0
|
122
|
-
jdk: oraclejdk9
|
123
|
-
|
124
|
-
- rvm: ruby-head
|
125
|
-
jdk: openjdk8
|
126
|
-
- rvm: ruby-head
|
127
|
-
jdk: oraclejdk8
|
128
|
-
- rvm: ruby-head
|
129
|
-
jdk: oraclejdk9
|
130
|
-
- rvm: rbx
|
131
|
-
jdk: openjdk8
|
132
|
-
- rvm: rbx
|
133
|
-
jdk: oraclejdk8
|
134
|
-
- rvm: rbx
|
135
|
-
jdk: oraclejdk9
|
136
|
-
|
137
|
-
# Rails 6.x requires Ruby 2.5.0 or higher
|
138
|
-
- rvm: 2.2.2
|
139
|
-
gemfile: gemfiles/rails60.gemfile
|
140
|
-
- rvm: 2.3.8
|
141
|
-
gemfile: gemfiles/rails60.gemfile
|
142
|
-
- rvm: 2.4.5
|
143
|
-
gemfile: gemfiles/rails60.gemfile
|
144
|
-
# Rails 5.x requires Ruby 2.2.2 or higher
|
145
|
-
- rvm: 2.0.0
|
146
|
-
gemfile: gemfiles/rails50.gemfile
|
147
|
-
- rvm: 2.0.0
|
148
|
-
gemfile: gemfiles/rails51.gemfile
|
149
|
-
- rvm: 2.0.0
|
150
|
-
gemfile: gemfiles/rails52.gemfile
|
151
|
-
- rvm: 2.0.0
|
152
|
-
gemfile: gemfiles/rails60.gemfile
|
153
|
-
# Rails 5.x requires Ruby 2.2.2 or higher
|
154
|
-
- rvm: 2.1.0
|
155
|
-
gemfile: gemfiles/rails50.gemfile
|
156
|
-
- rvm: 2.1.0
|
157
|
-
gemfile: gemfiles/rails51.gemfile
|
158
|
-
- rvm: 2.1.0
|
159
|
-
gemfile: gemfiles/rails52.gemfile
|
160
|
-
- rvm: 2.1.0
|
161
|
-
gemfile: gemfiles/rails60.gemfile
|
162
|
-
# MRI 2.2.2 supports Rails 3.2.x and higher, except Rails 5.2.4 and higher*
|
163
|
-
# * ActionDispatch 5.2.4 uses Ruby 3.x safe navigation operator.
|
164
|
-
- rvm: 2.2.2
|
165
|
-
gemfile: gemfiles/rails30.gemfile
|
166
|
-
- rvm: 2.2.2
|
167
|
-
gemfile: gemfiles/rails31.gemfile
|
168
|
-
- rvm: 2.2.2
|
169
|
-
gemfile: gemfiles/rails52.gemfile
|
170
|
-
# MRI 2.3.x supports Rails 4.0.x and higher
|
171
|
-
- rvm: 2.3.8
|
172
|
-
gemfile: gemfiles/rails30.gemfile
|
173
|
-
- rvm: 2.3.8
|
174
|
-
gemfile: gemfiles/rails31.gemfile
|
175
|
-
- rvm: 2.3.8
|
176
|
-
gemfile: gemfiles/rails32.gemfile
|
177
|
-
- rvm: 2.3.8
|
178
|
-
gemfile: gemfiles/rails40.gemfile
|
179
|
-
- rvm: 2.3.8
|
180
|
-
gemfile: gemfiles/rails41.gemfile
|
181
|
-
# MRI 2.4.x and higher (e.g. 2.5.x, 2.6.x, etc) supports Rails 4.2.8 and higher
|
182
|
-
# Rails lower than 4.2.8 is incompatible with Ruby 2.4 Integer class
|
183
|
-
- rvm: 2.4.5
|
184
|
-
gemfile: gemfiles/rails30.gemfile
|
185
|
-
- rvm: 2.4.5
|
186
|
-
gemfile: gemfiles/rails31.gemfile
|
187
|
-
- rvm: 2.4.5
|
188
|
-
gemfile: gemfiles/rails32.gemfile
|
189
|
-
- rvm: 2.4.5
|
190
|
-
gemfile: gemfiles/rails40.gemfile
|
191
|
-
- rvm: 2.4.5
|
192
|
-
gemfile: gemfiles/rails41.gemfile
|
193
|
-
- rvm: 2.5.3
|
194
|
-
gemfile: gemfiles/rails30.gemfile
|
195
|
-
- rvm: 2.5.3
|
196
|
-
gemfile: gemfiles/rails31.gemfile
|
197
|
-
- rvm: 2.5.3
|
198
|
-
gemfile: gemfiles/rails32.gemfile
|
199
|
-
- rvm: 2.5.3
|
200
|
-
gemfile: gemfiles/rails40.gemfile
|
201
|
-
- rvm: 2.5.3
|
202
|
-
gemfile: gemfiles/rails41.gemfile
|
203
|
-
- rvm: 2.6.5
|
204
|
-
gemfile: gemfiles/rails30.gemfile
|
205
|
-
- rvm: 2.6.5
|
206
|
-
gemfile: gemfiles/rails31.gemfile
|
207
|
-
- rvm: 2.6.5
|
208
|
-
gemfile: gemfiles/rails32.gemfile
|
209
|
-
- rvm: 2.6.5
|
210
|
-
gemfile: gemfiles/rails40.gemfile
|
211
|
-
- rvm: 2.6.5
|
212
|
-
gemfile: gemfiles/rails41.gemfile
|
213
|
-
- rvm: 2.6.5
|
214
|
-
gemfile: gemfiles/rails42.gemfile
|
215
|
-
# Rails 6.x tries to be compatible with Ruby 2.7, though
|
216
|
-
# it still throws a lot of warnings. No point testing earlier
|
217
|
-
# Rails with Ruby 2.7.
|
218
|
-
- rvm: 2.7.0
|
219
|
-
gemfile: gemfiles/rails30.gemfile
|
220
|
-
- rvm: 2.7.0
|
221
|
-
gemfile: gemfiles/rails31.gemfile
|
222
|
-
- rvm: 2.7.0
|
223
|
-
gemfile: gemfiles/rails32.gemfile
|
224
|
-
- rvm: 2.7.0
|
225
|
-
gemfile: gemfiles/rails40.gemfile
|
226
|
-
- rvm: 2.7.0
|
227
|
-
gemfile: gemfiles/rails41.gemfile
|
228
|
-
- rvm: 2.7.0
|
229
|
-
gemfile: gemfiles/rails42.gemfile
|
230
|
-
- rvm: 2.7.0
|
231
|
-
gemfile: gemfiles/rails50.gemfile
|
232
|
-
- rvm: 2.7.0
|
233
|
-
gemfile: gemfiles/rails51.gemfile
|
234
|
-
- rvm: 2.7.0
|
235
|
-
gemfile: gemfiles/rails52.gemfile
|
236
|
-
# JRuby JDBC Adapter is only compatible with Rails >= 5.x
|
237
|
-
- rvm: jruby-9.1.9.0
|
238
|
-
gemfile: gemfiles/rails30.gemfile
|
239
|
-
- rvm: jruby-9.1.9.0
|
240
|
-
gemfile: gemfiles/rails31.gemfile
|
241
|
-
- rvm: jruby-9.1.9.0
|
242
|
-
gemfile: gemfiles/rails32.gemfile
|
243
|
-
- rvm: jruby-9.1.9.0
|
244
|
-
gemfile: gemfiles/rails40.gemfile
|
245
|
-
- rvm: jruby-9.1.9.0
|
246
|
-
gemfile: gemfiles/rails41.gemfile
|
247
|
-
- rvm: jruby-9.1.9.0
|
248
|
-
gemfile: gemfiles/rails42.gemfile
|
249
|
-
- rvm: rbx
|
250
|
-
gemfile: gemfiles/rails30.gemfile
|
251
|
-
- rvm: rbx
|
252
|
-
gemfile: gemfiles/rails31.gemfile
|
253
|
-
- rvm: rbx
|
254
|
-
gemfile: gemfiles/rails32.gemfile
|
255
|
-
- rvm: rbx
|
256
|
-
gemfile: gemfiles/rails40.gemfile
|
257
|
-
- rvm: rbx
|
258
|
-
gemfile: gemfiles/rails41.gemfile
|
259
|
-
- rvm: rbx
|
260
|
-
gemfile: gemfiles/rails42.gemfile
|
261
|
-
- rvm: rbx
|
262
|
-
gemfile: gemfiles/rails50.gemfile
|
263
|
-
- rvm: rbx
|
264
|
-
gemfile: gemfiles/rails51.gemfile
|
265
|
-
- rvm: rbx
|
266
|
-
gemfile: gemfiles/rails52.gemfile
|
267
|
-
- rvm: rbx
|
268
|
-
gemfile: gemfiles/rails60.gemfile
|