unreliable 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +118 -43
- data/gemfiles/activerecord_5.0.gemfile.lock +16 -25
- data/gemfiles/activerecord_5.1.gemfile.lock +16 -25
- data/gemfiles/activerecord_5.2.gemfile.lock +30 -39
- data/gemfiles/activerecord_6.0.gemfile.lock +30 -39
- data/gemfiles/activerecord_6.1.gemfile.lock +31 -40
- data/gemfiles/activerecord_7.0.gemfile.lock +30 -39
- data/lib/unreliable/version.rb +1 -1
- data/spec/examples.txt +11 -11
- metadata +4 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 492ba9597605f55f1b9ee0d92a132a072a70257ef2b12bb54390f78dc6b67b7d
|
4
|
+
data.tar.gz: 385fe7486e4b8bf7b24ffc2657eee2d956d88a77e765582974a3bf20eb41480c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7328df183703ef3aa8410eb86995558d11f5855c86c20142b046632d95110681f162db99dede9f7b75f7e1bf72d0e05e7bdad675412005d84d05d9af957acedb
|
7
|
+
data.tar.gz: 453b0ae1dfc15bf3354a3caf7ea421caf61dd2b5d48ec8d1c04166749db470693e0da0ec4c863aeb81f03b970e2a94addc7795860396bbf9c025e2ad2c665f1a
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,42 +1,123 @@
|
|
1
1
|
# Unreliable
|
2
2
|
|
3
3
|
![CI workflow](https://github.com/jamiemccarthy/unreliable/actions/workflows/ci.yml/badge.svg)
|
4
|
-
|
4
|
+
![Gem version](https://img.shields.io/gem/v/unreliable)
|
5
|
+
[![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
|
6
|
+
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa)](code_of_conduct.md)
|
5
7
|
|
6
|
-
|
8
|
+
**Unreliable makes your ActiveRecord scopes and test suite better, by forcing your tests to not rely on ambiguous ordering.**
|
7
9
|
|
8
|
-
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add `unreliable` to your `Gemfile`'s `test` group:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
# Gemfile
|
16
|
+
|
17
|
+
group :test do
|
18
|
+
gem "unreliable", "~> 0.1"
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
Then `bundle install` and run your test suite repeatedly, maybe 6-8 times, looking for new failures.
|
23
|
+
|
24
|
+
## The problem
|
25
|
+
|
26
|
+
Here's an open secret: relational databases do not guarantee the order results are returned in, without a well-chosen ORDER BY clause.
|
27
|
+
|
28
|
+
Choosing a good ORDER is harder than it seems. And you can get it wrong silently. Your test suite won't help you if your database just happens to return the same order almost all the time. Which they usually do.
|
29
|
+
|
30
|
+
If your Rails code relies on that accidental ordering, that's a bug in your app. Or sometimes ambiguous order is fine for your app's purposes, but your tests rely on it. Either way, your tests are passing when they should be failing.
|
31
|
+
|
32
|
+
## The test
|
9
33
|
|
10
34
|
In a Rails test environment, Unreliable patches ActiveRecord to always have a final ORDER BY clause that returns results in a random order.
|
11
35
|
|
12
|
-
With Unreliable installed, every ActiveRecord relation invoked by the test suite will have any ambiguity replaced with randomness.
|
36
|
+
With Unreliable installed, every ActiveRecord relation invoked by the test suite will have any ambiguity replaced with randomness. Tests that rely on the ordering of two records will break half the time. Tests with three or more break most of the time.
|
37
|
+
|
38
|
+
If you install Unreliable and your test suite starts failing, but only sometimes, that tells you to check your app's relations and scopes, and check your tests.
|
39
|
+
|
40
|
+
Even your relations with an order may have an ambiguous order. See "Ordering trivia" below.
|
41
|
+
|
42
|
+
## The fixes
|
43
|
+
|
44
|
+
When Unreliable turns up a new test failure, it's for one of two reasons. Either your test needs to stop relying on order, or your app needs to specify order better.
|
45
|
+
|
46
|
+
### Incorrect test
|
47
|
+
|
48
|
+
Take a look at what you're testing. If you're testing a method or an endpoint that returns a list whose order doesn't matter and isn't documented, you may have written it to expect the order that was returned the first time you ran it. This often happens with fixtures. You might:
|
49
|
+
|
50
|
+
* Make your test accept all correct answers. For example, sort the method's response before comparing.
|
51
|
+
|
52
|
+
* Or, help your test suite focus on what you're testing. If your fixtures' "latest" element is random because they don't specify a timestamp, that may be a distraction that's not relevant to how your app works, so you could just assign them timestamps.
|
53
|
+
|
54
|
+
Either way, you eliminate potential spurious failures in your test suite.
|
55
|
+
|
56
|
+
### Incorrect app
|
57
|
+
|
58
|
+
If your app should be returning results in a particular order, and now with Unreliable it sometimes does not, your test is correct and your app is wrong. Specify order rigorously in your app.
|
59
|
+
|
60
|
+
Maybe you've defined an ordering this way:
|
61
|
+
|
62
|
+
```
|
63
|
+
class Book
|
64
|
+
scope :reverse_chron, -> { order(year_published: :desc) }
|
65
|
+
end
|
66
|
+
```
|
67
|
+
|
68
|
+
When you meant to define it unambiguously:
|
69
|
+
|
70
|
+
```
|
71
|
+
class Book
|
72
|
+
scope :reverse_chron, -> { order(year_published: :desc, title: :desc) }
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
Or, if `title` is not unique:
|
77
|
+
|
78
|
+
```
|
79
|
+
class Book
|
80
|
+
scope :reverse_chron, -> { order(year_published: :desc, title: :desc, id: :desc) }
|
81
|
+
end
|
82
|
+
```
|
83
|
+
|
84
|
+
This example is obviously wrong because many books are published each year, but this error can occur at any time granularity.
|
13
85
|
|
14
|
-
|
86
|
+
## Requirements
|
15
87
|
|
16
|
-
Unreliable
|
88
|
+
Unreliable is tested to support Ruby 2.6 through 3.1, and Rails 5.0 through 7.0.
|
17
89
|
|
18
|
-
|
90
|
+
As of April 2022, this is all released versions of both that are currently supported, plus several older releases.
|
91
|
+
|
92
|
+
Unreliable depends only on ActiveRecord and Railties. If you have a non-Rails app that uses ActiveRecord, you can still use it.
|
93
|
+
|
94
|
+
## Implementation
|
95
|
+
|
96
|
+
**Unreliable does exactly nothing outside of test environments. There is intentionally no way to enable Unreliable in production, and there never will be.**
|
19
97
|
|
20
98
|
Unreliable patches `ActiveRecord::QueryMethods#build_arel`, the point where an Arel is converted for use, to append an order to the existing order chain. (The patch is applied after ActiveRecord loads, using `ActiveSupport.on_load`, the standard interface since Rails 4.0.)
|
21
99
|
|
22
100
|
This means that the ORDER BY applies to not just SELECTs but e.g. delete_all and update_all. It also applies within subqueries.
|
23
101
|
|
24
|
-
By always appending the random order, we ensure unreliable ordering for relations that have no order at all, and also for relations with an ambiguous order. For example, ordering by a non-unique column, or a combination of multiple columns which together remain non-unique.
|
25
|
-
|
26
102
|
The patch is only applied when `Rails.env.test?`, and that boolean is also checked on every invocation to make certain it has no effect in any other environment.
|
27
103
|
|
28
104
|
`Unreliable::Config.disable do ... end` will turn it off for a block.
|
29
105
|
|
30
|
-
|
106
|
+
## Ordering trivia
|
31
107
|
|
32
|
-
|
108
|
+
The most common ambiguous ordering is an ORDER BY one column that is not unique, like a timestamp.
|
33
109
|
|
34
|
-
|
110
|
+
But there are other ways you can order a relation but still have your query be ambiguous:
|
111
|
+
|
112
|
+
* ORDER BY multiple columns, but with no subset which is unique
|
113
|
+
* ORDER BY a column with values that differ only by [character case](https://dev.mysql.com/doc/refman/8.0/en/sorting-rows.html)
|
35
114
|
* ORDER BY values that are identical within the [prefix length limit](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_sort_length) examined for sorting
|
36
115
|
|
37
|
-
|
116
|
+
Unreliable correctly tests these because the random order is always appended.
|
117
|
+
|
118
|
+
## Contributing
|
38
119
|
|
39
|
-
|
120
|
+
Thoughts and suggestions are welcome. Please read the code of conduct, then create an issue or pull request on GitHub. If you just have questions, go ahead and open an issue, I'm pretty friendly.
|
40
121
|
|
41
122
|
To test locally, against the different versions of ActiveRecord, use Ruby 2.7, the only version currently compatible with all the ActiveRecord versions supported. Install the required gems with:
|
42
123
|
|
@@ -46,52 +127,46 @@ bundle install
|
|
46
127
|
bundle exec appraisal install
|
47
128
|
```
|
48
129
|
|
49
|
-
|
130
|
+
Run Unreliable's linter with:
|
50
131
|
|
51
132
|
```
|
52
|
-
bundle exec
|
133
|
+
bundle exec standardrb
|
53
134
|
```
|
54
135
|
|
55
|
-
|
136
|
+
Then you can run Unreliable's tests with:
|
56
137
|
|
57
|
-
|
138
|
+
```
|
139
|
+
bundle exec appraisal rake
|
140
|
+
```
|
58
141
|
|
59
|
-
|
142
|
+
Appraisal ensures the tests run against every compatible minor version of ActiveRecord.
|
60
143
|
|
61
|
-
|
144
|
+
The GitHub CI workflow in `.github/` ensures those tests are also run against against every compatible minor version of Ruby. Your PR won't trigger my GitHub project's workflow, but you're welcome to run your own, or ask me to run mine manually.
|
62
145
|
|
63
|
-
|
64
|
-
Start with 1-line Gemfile `gem "rails", "~> x.y"`, bundle install, then
|
146
|
+
Testing against ActiveRecord is done with [Combustion](https://github.com/pat/combustion), which stands up a local single-table SQLite database and an ActiveRecord-based model for it. This gives more reliable coverage than mocking unit tests within ActiveRecord itself.
|
65
147
|
|
66
|
-
|
148
|
+
If you'd like to see Unreliable in action on a small but real Rails app locally, you can do this:
|
67
149
|
|
68
|
-
|
150
|
+
1. Start with a 1-line Gemfile: `gem "rails", "~> x.y"`
|
151
|
+
2. `bundle install`, then:
|
152
|
+
3. `bundle exec rails new . --skip-javascript --skip-webpack-install --skip-sprockets --skip-turbolinks --skip-jbuilder --skip-spring`
|
153
|
+
4. Add to Gemfile test block: `gem "unreliable", path: "../unreliable"`
|
154
|
+
5. `bundle install` again
|
155
|
+
6. `bundle exec rails generate model post title:string body:text`
|
156
|
+
7. `RAILS_ENV=test bundle exec rails db:migrate`
|
157
|
+
8. `RAILS_ENV=test bundle exec rails c`
|
158
|
+
9. You should see "Loading test environment" and the Rails console prompt. Then to test:
|
69
159
|
|
70
|
-
|
71
|
-
$ RAILS_ENV=test bundle exec rails db:migrate
|
72
|
-
$ RAILS_ENV=test bundle exec rails c
|
73
|
-
Loading test environment (Rails 7.0.1)
|
160
|
+
```
|
74
161
|
3.0.1 :001 > puts Post.where(title: "abc").to_sql
|
75
162
|
(0.7ms) SELECT sqlite_version(*)
|
76
163
|
SELECT "posts".* FROM "posts" WHERE "posts"."title" = 'abc' ORDER BY RAND()
|
77
164
|
```
|
78
165
|
|
79
|
-
|
80
|
-
|
81
|
-
When it's necessary to add new minor versions of ActiveRecord or Ruby, update the Appraisals file and run `bundle exec appraisal update` as well as the install, and update the matrix in the ci.yml workflow.
|
82
|
-
|
83
|
-
# Contributing
|
84
|
-
|
85
|
-
Thoughts and suggestions are welcome. Please read the code of conduct, then create an issue or pull request on GitHub.
|
86
|
-
|
87
|
-
Future work I'd like to see done includes:
|
88
|
-
|
89
|
-
* Moving to containerized testing, so the test suite can cover MySQL and Postgres.
|
90
|
-
|
91
|
-
* Addressing the deprecation warnings in the test suite for ActiveRecord 5.x. There are two: SQLite 1.3 warning of incompatibility with Ruby 3.2 (which is irrelevant since Rails 5 won't run on Ruby 3.2 and Rails 6 requires SQLite 1.4). And: `DEPRECATION WARNING: Leaving ActiveRecord::ConnectionAdapters::SQLite3Adapter.represent_boolean_as_integer set to false is deprecated.`
|
166
|
+
## Future development
|
92
167
|
|
93
|
-
|
168
|
+
When new minor versions of ActiveRecord or Ruby are released, I will update the Appraisals file and run `bundle exec appraisal update` as well as the install, and update the matrix in the ci.yml workflow. There will be a patch-level release for these changes, even if no Unreliable code changes are required.
|
94
169
|
|
95
|
-
|
170
|
+
## See also
|
96
171
|
|
97
172
|
[chaotic_order](https://rubygems.org/gems/chaotic_order)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
@@ -43,22 +43,21 @@ GEM
|
|
43
43
|
activesupport (>= 3.0.0)
|
44
44
|
railties (>= 3.0.0)
|
45
45
|
thor (>= 0.14.6)
|
46
|
-
concurrent-ruby (1.1.
|
46
|
+
concurrent-ruby (1.1.10)
|
47
47
|
crass (1.0.6)
|
48
48
|
diff-lcs (1.5.0)
|
49
|
-
docile (1.4.0)
|
50
49
|
erubis (2.7.0)
|
51
50
|
i18n (1.10.0)
|
52
51
|
concurrent-ruby (~> 1.0)
|
53
|
-
loofah (2.
|
52
|
+
loofah (2.16.0)
|
54
53
|
crass (~> 1.0.2)
|
55
54
|
nokogiri (>= 1.5.9)
|
56
55
|
method_source (1.0.0)
|
57
56
|
minitest (5.15.0)
|
58
|
-
nokogiri (1.13.
|
57
|
+
nokogiri (1.13.4-x86_64-linux)
|
59
58
|
racc (~> 1.4)
|
60
|
-
parallel (1.
|
61
|
-
parser (3.1.
|
59
|
+
parallel (1.22.1)
|
60
|
+
parser (3.1.2.0)
|
62
61
|
ast (~> 2.4.1)
|
63
62
|
racc (1.6.0)
|
64
63
|
rack (2.2.3)
|
@@ -77,7 +76,7 @@ GEM
|
|
77
76
|
thor (>= 0.18.1, < 2.0)
|
78
77
|
rainbow (3.1.1)
|
79
78
|
rake (13.0.6)
|
80
|
-
regexp_parser (2.
|
79
|
+
regexp_parser (2.3.1)
|
81
80
|
rexml (3.2.5)
|
82
81
|
rspec (3.11.0)
|
83
82
|
rspec-core (~> 3.11.0)
|
@@ -88,35 +87,29 @@ GEM
|
|
88
87
|
rspec-expectations (3.11.0)
|
89
88
|
diff-lcs (>= 1.2.0, < 2.0)
|
90
89
|
rspec-support (~> 3.11.0)
|
91
|
-
rspec-mocks (3.11.
|
90
|
+
rspec-mocks (3.11.1)
|
92
91
|
diff-lcs (>= 1.2.0, < 2.0)
|
93
92
|
rspec-support (~> 3.11.0)
|
94
93
|
rspec-support (3.11.0)
|
95
|
-
rubocop (1.
|
94
|
+
rubocop (1.28.2)
|
96
95
|
parallel (~> 1.10)
|
97
96
|
parser (>= 3.1.0.0)
|
98
97
|
rainbow (>= 2.2.2, < 4.0)
|
99
98
|
regexp_parser (>= 1.8, < 3.0)
|
100
99
|
rexml
|
101
|
-
rubocop-ast (>= 1.
|
100
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
102
101
|
ruby-progressbar (~> 1.7)
|
103
102
|
unicode-display_width (>= 1.4.0, < 3.0)
|
104
|
-
rubocop-ast (1.
|
103
|
+
rubocop-ast (1.17.0)
|
105
104
|
parser (>= 3.1.1.0)
|
106
|
-
rubocop-performance (1.13.
|
105
|
+
rubocop-performance (1.13.3)
|
107
106
|
rubocop (>= 1.7.0, < 2.0)
|
108
107
|
rubocop-ast (>= 0.4.0)
|
109
108
|
ruby-progressbar (1.11.0)
|
110
|
-
simplecov (0.21.2)
|
111
|
-
docile (~> 1.1)
|
112
|
-
simplecov-html (~> 0.11)
|
113
|
-
simplecov_json_formatter (~> 0.1)
|
114
|
-
simplecov-html (0.12.3)
|
115
|
-
simplecov_json_formatter (0.1.4)
|
116
109
|
sqlite3 (1.3.13)
|
117
|
-
standard (1.
|
118
|
-
rubocop (= 1.
|
119
|
-
rubocop-performance (= 1.13.
|
110
|
+
standard (1.11.0)
|
111
|
+
rubocop (= 1.28.2)
|
112
|
+
rubocop-performance (= 1.13.3)
|
120
113
|
thor (1.2.1)
|
121
114
|
thread_safe (0.3.6)
|
122
115
|
tzinfo (1.2.9)
|
@@ -133,10 +126,8 @@ DEPENDENCIES
|
|
133
126
|
combustion (~> 1.3)
|
134
127
|
rake (~> 13.0)
|
135
128
|
rspec (~> 3.0)
|
136
|
-
rubocop (~> 1.25)
|
137
|
-
simplecov (~> 0.21)
|
138
129
|
sqlite3 (~> 1.3.6)
|
139
|
-
standard (~> 1.
|
130
|
+
standard (~> 1.11)
|
140
131
|
unreliable!
|
141
132
|
|
142
133
|
BUNDLED WITH
|
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
@@ -43,22 +43,21 @@ GEM
|
|
43
43
|
activesupport (>= 3.0.0)
|
44
44
|
railties (>= 3.0.0)
|
45
45
|
thor (>= 0.14.6)
|
46
|
-
concurrent-ruby (1.1.
|
46
|
+
concurrent-ruby (1.1.10)
|
47
47
|
crass (1.0.6)
|
48
48
|
diff-lcs (1.5.0)
|
49
|
-
docile (1.4.0)
|
50
49
|
erubi (1.10.0)
|
51
50
|
i18n (1.10.0)
|
52
51
|
concurrent-ruby (~> 1.0)
|
53
|
-
loofah (2.
|
52
|
+
loofah (2.16.0)
|
54
53
|
crass (~> 1.0.2)
|
55
54
|
nokogiri (>= 1.5.9)
|
56
55
|
method_source (1.0.0)
|
57
56
|
minitest (5.15.0)
|
58
|
-
nokogiri (1.13.
|
57
|
+
nokogiri (1.13.4-x86_64-linux)
|
59
58
|
racc (~> 1.4)
|
60
|
-
parallel (1.
|
61
|
-
parser (3.1.
|
59
|
+
parallel (1.22.1)
|
60
|
+
parser (3.1.2.0)
|
62
61
|
ast (~> 2.4.1)
|
63
62
|
racc (1.6.0)
|
64
63
|
rack (2.2.3)
|
@@ -77,7 +76,7 @@ GEM
|
|
77
76
|
thor (>= 0.18.1, < 2.0)
|
78
77
|
rainbow (3.1.1)
|
79
78
|
rake (13.0.6)
|
80
|
-
regexp_parser (2.
|
79
|
+
regexp_parser (2.3.1)
|
81
80
|
rexml (3.2.5)
|
82
81
|
rspec (3.11.0)
|
83
82
|
rspec-core (~> 3.11.0)
|
@@ -88,35 +87,29 @@ GEM
|
|
88
87
|
rspec-expectations (3.11.0)
|
89
88
|
diff-lcs (>= 1.2.0, < 2.0)
|
90
89
|
rspec-support (~> 3.11.0)
|
91
|
-
rspec-mocks (3.11.
|
90
|
+
rspec-mocks (3.11.1)
|
92
91
|
diff-lcs (>= 1.2.0, < 2.0)
|
93
92
|
rspec-support (~> 3.11.0)
|
94
93
|
rspec-support (3.11.0)
|
95
|
-
rubocop (1.
|
94
|
+
rubocop (1.28.2)
|
96
95
|
parallel (~> 1.10)
|
97
96
|
parser (>= 3.1.0.0)
|
98
97
|
rainbow (>= 2.2.2, < 4.0)
|
99
98
|
regexp_parser (>= 1.8, < 3.0)
|
100
99
|
rexml
|
101
|
-
rubocop-ast (>= 1.
|
100
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
102
101
|
ruby-progressbar (~> 1.7)
|
103
102
|
unicode-display_width (>= 1.4.0, < 3.0)
|
104
|
-
rubocop-ast (1.
|
103
|
+
rubocop-ast (1.17.0)
|
105
104
|
parser (>= 3.1.1.0)
|
106
|
-
rubocop-performance (1.13.
|
105
|
+
rubocop-performance (1.13.3)
|
107
106
|
rubocop (>= 1.7.0, < 2.0)
|
108
107
|
rubocop-ast (>= 0.4.0)
|
109
108
|
ruby-progressbar (1.11.0)
|
110
|
-
simplecov (0.21.2)
|
111
|
-
docile (~> 1.1)
|
112
|
-
simplecov-html (~> 0.11)
|
113
|
-
simplecov_json_formatter (~> 0.1)
|
114
|
-
simplecov-html (0.12.3)
|
115
|
-
simplecov_json_formatter (0.1.4)
|
116
109
|
sqlite3 (1.3.13)
|
117
|
-
standard (1.
|
118
|
-
rubocop (= 1.
|
119
|
-
rubocop-performance (= 1.13.
|
110
|
+
standard (1.11.0)
|
111
|
+
rubocop (= 1.28.2)
|
112
|
+
rubocop-performance (= 1.13.3)
|
120
113
|
thor (1.2.1)
|
121
114
|
thread_safe (0.3.6)
|
122
115
|
tzinfo (1.2.9)
|
@@ -133,10 +126,8 @@ DEPENDENCIES
|
|
133
126
|
combustion (~> 1.3)
|
134
127
|
rake (~> 13.0)
|
135
128
|
rspec (~> 3.0)
|
136
|
-
rubocop (~> 1.25)
|
137
|
-
simplecov (~> 0.21)
|
138
129
|
sqlite3 (~> 1.3.6)
|
139
|
-
standard (~> 1.
|
130
|
+
standard (~> 1.11)
|
140
131
|
unreliable!
|
141
132
|
|
142
133
|
BUNDLED WITH
|
@@ -1,33 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionpack (5.2.
|
12
|
-
actionview (= 5.2.
|
13
|
-
activesupport (= 5.2.
|
11
|
+
actionpack (5.2.7)
|
12
|
+
actionview (= 5.2.7)
|
13
|
+
activesupport (= 5.2.7)
|
14
14
|
rack (~> 2.0, >= 2.0.8)
|
15
15
|
rack-test (>= 0.6.3)
|
16
16
|
rails-dom-testing (~> 2.0)
|
17
17
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
18
|
-
actionview (5.2.
|
19
|
-
activesupport (= 5.2.
|
18
|
+
actionview (5.2.7)
|
19
|
+
activesupport (= 5.2.7)
|
20
20
|
builder (~> 3.1)
|
21
21
|
erubi (~> 1.4)
|
22
22
|
rails-dom-testing (~> 2.0)
|
23
23
|
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
24
|
-
activemodel (5.2.
|
25
|
-
activesupport (= 5.2.
|
26
|
-
activerecord (5.2.
|
27
|
-
activemodel (= 5.2.
|
28
|
-
activesupport (= 5.2.
|
24
|
+
activemodel (5.2.7)
|
25
|
+
activesupport (= 5.2.7)
|
26
|
+
activerecord (5.2.7)
|
27
|
+
activemodel (= 5.2.7)
|
28
|
+
activesupport (= 5.2.7)
|
29
29
|
arel (>= 9.0)
|
30
|
-
activesupport (5.2.
|
30
|
+
activesupport (5.2.7)
|
31
31
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
32
32
|
i18n (>= 0.7, < 2)
|
33
33
|
minitest (~> 5.1)
|
@@ -43,22 +43,21 @@ GEM
|
|
43
43
|
activesupport (>= 3.0.0)
|
44
44
|
railties (>= 3.0.0)
|
45
45
|
thor (>= 0.14.6)
|
46
|
-
concurrent-ruby (1.1.
|
46
|
+
concurrent-ruby (1.1.10)
|
47
47
|
crass (1.0.6)
|
48
48
|
diff-lcs (1.5.0)
|
49
|
-
docile (1.4.0)
|
50
49
|
erubi (1.10.0)
|
51
50
|
i18n (1.10.0)
|
52
51
|
concurrent-ruby (~> 1.0)
|
53
|
-
loofah (2.
|
52
|
+
loofah (2.16.0)
|
54
53
|
crass (~> 1.0.2)
|
55
54
|
nokogiri (>= 1.5.9)
|
56
55
|
method_source (1.0.0)
|
57
56
|
minitest (5.15.0)
|
58
|
-
nokogiri (1.13.
|
57
|
+
nokogiri (1.13.4-x86_64-linux)
|
59
58
|
racc (~> 1.4)
|
60
|
-
parallel (1.
|
61
|
-
parser (3.1.
|
59
|
+
parallel (1.22.1)
|
60
|
+
parser (3.1.2.0)
|
62
61
|
ast (~> 2.4.1)
|
63
62
|
racc (1.6.0)
|
64
63
|
rack (2.2.3)
|
@@ -69,15 +68,15 @@ GEM
|
|
69
68
|
nokogiri (>= 1.6)
|
70
69
|
rails-html-sanitizer (1.4.2)
|
71
70
|
loofah (~> 2.3)
|
72
|
-
railties (5.2.
|
73
|
-
actionpack (= 5.2.
|
74
|
-
activesupport (= 5.2.
|
71
|
+
railties (5.2.7)
|
72
|
+
actionpack (= 5.2.7)
|
73
|
+
activesupport (= 5.2.7)
|
75
74
|
method_source
|
76
75
|
rake (>= 0.8.7)
|
77
76
|
thor (>= 0.19.0, < 2.0)
|
78
77
|
rainbow (3.1.1)
|
79
78
|
rake (13.0.6)
|
80
|
-
regexp_parser (2.
|
79
|
+
regexp_parser (2.3.1)
|
81
80
|
rexml (3.2.5)
|
82
81
|
rspec (3.11.0)
|
83
82
|
rspec-core (~> 3.11.0)
|
@@ -88,35 +87,29 @@ GEM
|
|
88
87
|
rspec-expectations (3.11.0)
|
89
88
|
diff-lcs (>= 1.2.0, < 2.0)
|
90
89
|
rspec-support (~> 3.11.0)
|
91
|
-
rspec-mocks (3.11.
|
90
|
+
rspec-mocks (3.11.1)
|
92
91
|
diff-lcs (>= 1.2.0, < 2.0)
|
93
92
|
rspec-support (~> 3.11.0)
|
94
93
|
rspec-support (3.11.0)
|
95
|
-
rubocop (1.
|
94
|
+
rubocop (1.28.2)
|
96
95
|
parallel (~> 1.10)
|
97
96
|
parser (>= 3.1.0.0)
|
98
97
|
rainbow (>= 2.2.2, < 4.0)
|
99
98
|
regexp_parser (>= 1.8, < 3.0)
|
100
99
|
rexml
|
101
|
-
rubocop-ast (>= 1.
|
100
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
102
101
|
ruby-progressbar (~> 1.7)
|
103
102
|
unicode-display_width (>= 1.4.0, < 3.0)
|
104
|
-
rubocop-ast (1.
|
103
|
+
rubocop-ast (1.17.0)
|
105
104
|
parser (>= 3.1.1.0)
|
106
|
-
rubocop-performance (1.13.
|
105
|
+
rubocop-performance (1.13.3)
|
107
106
|
rubocop (>= 1.7.0, < 2.0)
|
108
107
|
rubocop-ast (>= 0.4.0)
|
109
108
|
ruby-progressbar (1.11.0)
|
110
|
-
simplecov (0.21.2)
|
111
|
-
docile (~> 1.1)
|
112
|
-
simplecov-html (~> 0.11)
|
113
|
-
simplecov_json_formatter (~> 0.1)
|
114
|
-
simplecov-html (0.12.3)
|
115
|
-
simplecov_json_formatter (0.1.4)
|
116
109
|
sqlite3 (1.3.13)
|
117
|
-
standard (1.
|
118
|
-
rubocop (= 1.
|
119
|
-
rubocop-performance (= 1.13.
|
110
|
+
standard (1.11.0)
|
111
|
+
rubocop (= 1.28.2)
|
112
|
+
rubocop-performance (= 1.13.3)
|
120
113
|
thor (1.2.1)
|
121
114
|
thread_safe (0.3.6)
|
122
115
|
tzinfo (1.2.9)
|
@@ -133,10 +126,8 @@ DEPENDENCIES
|
|
133
126
|
combustion (~> 1.3)
|
134
127
|
rake (~> 13.0)
|
135
128
|
rspec (~> 3.0)
|
136
|
-
rubocop (~> 1.25)
|
137
|
-
simplecov (~> 0.21)
|
138
129
|
sqlite3 (~> 1.3.6)
|
139
|
-
standard (~> 1.
|
130
|
+
standard (~> 1.11)
|
140
131
|
unreliable!
|
141
132
|
|
142
133
|
BUNDLED WITH
|
@@ -1,32 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionpack (6.0.4.
|
12
|
-
actionview (= 6.0.4.
|
13
|
-
activesupport (= 6.0.4.
|
11
|
+
actionpack (6.0.4.7)
|
12
|
+
actionview (= 6.0.4.7)
|
13
|
+
activesupport (= 6.0.4.7)
|
14
14
|
rack (~> 2.0, >= 2.0.8)
|
15
15
|
rack-test (>= 0.6.3)
|
16
16
|
rails-dom-testing (~> 2.0)
|
17
17
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
18
|
-
actionview (6.0.4.
|
19
|
-
activesupport (= 6.0.4.
|
18
|
+
actionview (6.0.4.7)
|
19
|
+
activesupport (= 6.0.4.7)
|
20
20
|
builder (~> 3.1)
|
21
21
|
erubi (~> 1.4)
|
22
22
|
rails-dom-testing (~> 2.0)
|
23
23
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
24
|
-
activemodel (6.0.4.
|
25
|
-
activesupport (= 6.0.4.
|
26
|
-
activerecord (6.0.4.
|
27
|
-
activemodel (= 6.0.4.
|
28
|
-
activesupport (= 6.0.4.
|
29
|
-
activesupport (6.0.4.
|
24
|
+
activemodel (6.0.4.7)
|
25
|
+
activesupport (= 6.0.4.7)
|
26
|
+
activerecord (6.0.4.7)
|
27
|
+
activemodel (= 6.0.4.7)
|
28
|
+
activesupport (= 6.0.4.7)
|
29
|
+
activesupport (6.0.4.7)
|
30
30
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
31
31
|
i18n (>= 0.7, < 2)
|
32
32
|
minitest (~> 5.1)
|
@@ -42,22 +42,21 @@ GEM
|
|
42
42
|
activesupport (>= 3.0.0)
|
43
43
|
railties (>= 3.0.0)
|
44
44
|
thor (>= 0.14.6)
|
45
|
-
concurrent-ruby (1.1.
|
45
|
+
concurrent-ruby (1.1.10)
|
46
46
|
crass (1.0.6)
|
47
47
|
diff-lcs (1.5.0)
|
48
|
-
docile (1.4.0)
|
49
48
|
erubi (1.10.0)
|
50
49
|
i18n (1.10.0)
|
51
50
|
concurrent-ruby (~> 1.0)
|
52
|
-
loofah (2.
|
51
|
+
loofah (2.16.0)
|
53
52
|
crass (~> 1.0.2)
|
54
53
|
nokogiri (>= 1.5.9)
|
55
54
|
method_source (1.0.0)
|
56
55
|
minitest (5.15.0)
|
57
|
-
nokogiri (1.13.
|
56
|
+
nokogiri (1.13.4-x86_64-linux)
|
58
57
|
racc (~> 1.4)
|
59
|
-
parallel (1.
|
60
|
-
parser (3.1.
|
58
|
+
parallel (1.22.1)
|
59
|
+
parser (3.1.2.0)
|
61
60
|
ast (~> 2.4.1)
|
62
61
|
racc (1.6.0)
|
63
62
|
rack (2.2.3)
|
@@ -68,15 +67,15 @@ GEM
|
|
68
67
|
nokogiri (>= 1.6)
|
69
68
|
rails-html-sanitizer (1.4.2)
|
70
69
|
loofah (~> 2.3)
|
71
|
-
railties (6.0.4.
|
72
|
-
actionpack (= 6.0.4.
|
73
|
-
activesupport (= 6.0.4.
|
70
|
+
railties (6.0.4.7)
|
71
|
+
actionpack (= 6.0.4.7)
|
72
|
+
activesupport (= 6.0.4.7)
|
74
73
|
method_source
|
75
74
|
rake (>= 0.8.7)
|
76
75
|
thor (>= 0.20.3, < 2.0)
|
77
76
|
rainbow (3.1.1)
|
78
77
|
rake (13.0.6)
|
79
|
-
regexp_parser (2.
|
78
|
+
regexp_parser (2.3.1)
|
80
79
|
rexml (3.2.5)
|
81
80
|
rspec (3.11.0)
|
82
81
|
rspec-core (~> 3.11.0)
|
@@ -87,35 +86,29 @@ GEM
|
|
87
86
|
rspec-expectations (3.11.0)
|
88
87
|
diff-lcs (>= 1.2.0, < 2.0)
|
89
88
|
rspec-support (~> 3.11.0)
|
90
|
-
rspec-mocks (3.11.
|
89
|
+
rspec-mocks (3.11.1)
|
91
90
|
diff-lcs (>= 1.2.0, < 2.0)
|
92
91
|
rspec-support (~> 3.11.0)
|
93
92
|
rspec-support (3.11.0)
|
94
|
-
rubocop (1.
|
93
|
+
rubocop (1.28.2)
|
95
94
|
parallel (~> 1.10)
|
96
95
|
parser (>= 3.1.0.0)
|
97
96
|
rainbow (>= 2.2.2, < 4.0)
|
98
97
|
regexp_parser (>= 1.8, < 3.0)
|
99
98
|
rexml
|
100
|
-
rubocop-ast (>= 1.
|
99
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
101
100
|
ruby-progressbar (~> 1.7)
|
102
101
|
unicode-display_width (>= 1.4.0, < 3.0)
|
103
|
-
rubocop-ast (1.
|
102
|
+
rubocop-ast (1.17.0)
|
104
103
|
parser (>= 3.1.1.0)
|
105
|
-
rubocop-performance (1.13.
|
104
|
+
rubocop-performance (1.13.3)
|
106
105
|
rubocop (>= 1.7.0, < 2.0)
|
107
106
|
rubocop-ast (>= 0.4.0)
|
108
107
|
ruby-progressbar (1.11.0)
|
109
|
-
simplecov (0.21.2)
|
110
|
-
docile (~> 1.1)
|
111
|
-
simplecov-html (~> 0.11)
|
112
|
-
simplecov_json_formatter (~> 0.1)
|
113
|
-
simplecov-html (0.12.3)
|
114
|
-
simplecov_json_formatter (0.1.4)
|
115
108
|
sqlite3 (1.4.2)
|
116
|
-
standard (1.
|
117
|
-
rubocop (= 1.
|
118
|
-
rubocop-performance (= 1.13.
|
109
|
+
standard (1.11.0)
|
110
|
+
rubocop (= 1.28.2)
|
111
|
+
rubocop-performance (= 1.13.3)
|
119
112
|
thor (1.2.1)
|
120
113
|
thread_safe (0.3.6)
|
121
114
|
tzinfo (1.2.9)
|
@@ -133,10 +126,8 @@ DEPENDENCIES
|
|
133
126
|
combustion (~> 1.3)
|
134
127
|
rake (~> 13.0)
|
135
128
|
rspec (~> 3.0)
|
136
|
-
rubocop (~> 1.25)
|
137
|
-
simplecov (~> 0.21)
|
138
129
|
sqlite3 (~> 1.4)
|
139
|
-
standard (~> 1.
|
130
|
+
standard (~> 1.11)
|
140
131
|
unreliable!
|
141
132
|
|
142
133
|
BUNDLED WITH
|
@@ -1,32 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionpack (6.1.
|
12
|
-
actionview (= 6.1.
|
13
|
-
activesupport (= 6.1.
|
11
|
+
actionpack (6.1.5)
|
12
|
+
actionview (= 6.1.5)
|
13
|
+
activesupport (= 6.1.5)
|
14
14
|
rack (~> 2.0, >= 2.0.9)
|
15
15
|
rack-test (>= 0.6.3)
|
16
16
|
rails-dom-testing (~> 2.0)
|
17
17
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
18
|
-
actionview (6.1.
|
19
|
-
activesupport (= 6.1.
|
18
|
+
actionview (6.1.5)
|
19
|
+
activesupport (= 6.1.5)
|
20
20
|
builder (~> 3.1)
|
21
21
|
erubi (~> 1.4)
|
22
22
|
rails-dom-testing (~> 2.0)
|
23
23
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
24
|
-
activemodel (6.1.
|
25
|
-
activesupport (= 6.1.
|
26
|
-
activerecord (6.1.
|
27
|
-
activemodel (= 6.1.
|
28
|
-
activesupport (= 6.1.
|
29
|
-
activesupport (6.1.
|
24
|
+
activemodel (6.1.5)
|
25
|
+
activesupport (= 6.1.5)
|
26
|
+
activerecord (6.1.5)
|
27
|
+
activemodel (= 6.1.5)
|
28
|
+
activesupport (= 6.1.5)
|
29
|
+
activesupport (6.1.5)
|
30
30
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
31
31
|
i18n (>= 1.6, < 2)
|
32
32
|
minitest (>= 5.1)
|
@@ -42,22 +42,21 @@ GEM
|
|
42
42
|
activesupport (>= 3.0.0)
|
43
43
|
railties (>= 3.0.0)
|
44
44
|
thor (>= 0.14.6)
|
45
|
-
concurrent-ruby (1.1.
|
45
|
+
concurrent-ruby (1.1.10)
|
46
46
|
crass (1.0.6)
|
47
47
|
diff-lcs (1.5.0)
|
48
|
-
docile (1.4.0)
|
49
48
|
erubi (1.10.0)
|
50
49
|
i18n (1.10.0)
|
51
50
|
concurrent-ruby (~> 1.0)
|
52
|
-
loofah (2.
|
51
|
+
loofah (2.16.0)
|
53
52
|
crass (~> 1.0.2)
|
54
53
|
nokogiri (>= 1.5.9)
|
55
54
|
method_source (1.0.0)
|
56
55
|
minitest (5.15.0)
|
57
|
-
nokogiri (1.13.
|
56
|
+
nokogiri (1.13.4-x86_64-linux)
|
58
57
|
racc (~> 1.4)
|
59
|
-
parallel (1.
|
60
|
-
parser (3.1.
|
58
|
+
parallel (1.22.1)
|
59
|
+
parser (3.1.2.0)
|
61
60
|
ast (~> 2.4.1)
|
62
61
|
racc (1.6.0)
|
63
62
|
rack (2.2.3)
|
@@ -68,15 +67,15 @@ GEM
|
|
68
67
|
nokogiri (>= 1.6)
|
69
68
|
rails-html-sanitizer (1.4.2)
|
70
69
|
loofah (~> 2.3)
|
71
|
-
railties (6.1.
|
72
|
-
actionpack (= 6.1.
|
73
|
-
activesupport (= 6.1.
|
70
|
+
railties (6.1.5)
|
71
|
+
actionpack (= 6.1.5)
|
72
|
+
activesupport (= 6.1.5)
|
74
73
|
method_source
|
75
|
-
rake (>=
|
74
|
+
rake (>= 12.2)
|
76
75
|
thor (~> 1.0)
|
77
76
|
rainbow (3.1.1)
|
78
77
|
rake (13.0.6)
|
79
|
-
regexp_parser (2.
|
78
|
+
regexp_parser (2.3.1)
|
80
79
|
rexml (3.2.5)
|
81
80
|
rspec (3.11.0)
|
82
81
|
rspec-core (~> 3.11.0)
|
@@ -87,35 +86,29 @@ GEM
|
|
87
86
|
rspec-expectations (3.11.0)
|
88
87
|
diff-lcs (>= 1.2.0, < 2.0)
|
89
88
|
rspec-support (~> 3.11.0)
|
90
|
-
rspec-mocks (3.11.
|
89
|
+
rspec-mocks (3.11.1)
|
91
90
|
diff-lcs (>= 1.2.0, < 2.0)
|
92
91
|
rspec-support (~> 3.11.0)
|
93
92
|
rspec-support (3.11.0)
|
94
|
-
rubocop (1.
|
93
|
+
rubocop (1.28.2)
|
95
94
|
parallel (~> 1.10)
|
96
95
|
parser (>= 3.1.0.0)
|
97
96
|
rainbow (>= 2.2.2, < 4.0)
|
98
97
|
regexp_parser (>= 1.8, < 3.0)
|
99
98
|
rexml
|
100
|
-
rubocop-ast (>= 1.
|
99
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
101
100
|
ruby-progressbar (~> 1.7)
|
102
101
|
unicode-display_width (>= 1.4.0, < 3.0)
|
103
|
-
rubocop-ast (1.
|
102
|
+
rubocop-ast (1.17.0)
|
104
103
|
parser (>= 3.1.1.0)
|
105
|
-
rubocop-performance (1.13.
|
104
|
+
rubocop-performance (1.13.3)
|
106
105
|
rubocop (>= 1.7.0, < 2.0)
|
107
106
|
rubocop-ast (>= 0.4.0)
|
108
107
|
ruby-progressbar (1.11.0)
|
109
|
-
simplecov (0.21.2)
|
110
|
-
docile (~> 1.1)
|
111
|
-
simplecov-html (~> 0.11)
|
112
|
-
simplecov_json_formatter (~> 0.1)
|
113
|
-
simplecov-html (0.12.3)
|
114
|
-
simplecov_json_formatter (0.1.4)
|
115
108
|
sqlite3 (1.4.2)
|
116
|
-
standard (1.
|
117
|
-
rubocop (= 1.
|
118
|
-
rubocop-performance (= 1.13.
|
109
|
+
standard (1.11.0)
|
110
|
+
rubocop (= 1.28.2)
|
111
|
+
rubocop-performance (= 1.13.3)
|
119
112
|
thor (1.2.1)
|
120
113
|
tzinfo (2.0.4)
|
121
114
|
concurrent-ruby (~> 1.0)
|
@@ -132,10 +125,8 @@ DEPENDENCIES
|
|
132
125
|
combustion (~> 1.3)
|
133
126
|
rake (~> 13.0)
|
134
127
|
rspec (~> 3.0)
|
135
|
-
rubocop (~> 1.25)
|
136
|
-
simplecov (~> 0.21)
|
137
128
|
sqlite3 (~> 1.4)
|
138
|
-
standard (~> 1.
|
129
|
+
standard (~> 1.11)
|
139
130
|
unreliable!
|
140
131
|
|
141
132
|
BUNDLED WITH
|
@@ -1,32 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
unreliable (0.1.
|
4
|
+
unreliable (0.1.2)
|
5
5
|
activerecord (>= 5.0, < 8.0)
|
6
6
|
railties (>= 5.0, < 8.0)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionpack (7.0.2.
|
12
|
-
actionview (= 7.0.2.
|
13
|
-
activesupport (= 7.0.2.
|
11
|
+
actionpack (7.0.2.3)
|
12
|
+
actionview (= 7.0.2.3)
|
13
|
+
activesupport (= 7.0.2.3)
|
14
14
|
rack (~> 2.0, >= 2.2.0)
|
15
15
|
rack-test (>= 0.6.3)
|
16
16
|
rails-dom-testing (~> 2.0)
|
17
17
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
18
|
-
actionview (7.0.2.
|
19
|
-
activesupport (= 7.0.2.
|
18
|
+
actionview (7.0.2.3)
|
19
|
+
activesupport (= 7.0.2.3)
|
20
20
|
builder (~> 3.1)
|
21
21
|
erubi (~> 1.4)
|
22
22
|
rails-dom-testing (~> 2.0)
|
23
23
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
24
|
-
activemodel (7.0.2.
|
25
|
-
activesupport (= 7.0.2.
|
26
|
-
activerecord (7.0.2.
|
27
|
-
activemodel (= 7.0.2.
|
28
|
-
activesupport (= 7.0.2.
|
29
|
-
activesupport (7.0.2.
|
24
|
+
activemodel (7.0.2.3)
|
25
|
+
activesupport (= 7.0.2.3)
|
26
|
+
activerecord (7.0.2.3)
|
27
|
+
activemodel (= 7.0.2.3)
|
28
|
+
activesupport (= 7.0.2.3)
|
29
|
+
activesupport (7.0.2.3)
|
30
30
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
31
31
|
i18n (>= 1.6, < 2)
|
32
32
|
minitest (>= 5.1)
|
@@ -41,22 +41,21 @@ GEM
|
|
41
41
|
activesupport (>= 3.0.0)
|
42
42
|
railties (>= 3.0.0)
|
43
43
|
thor (>= 0.14.6)
|
44
|
-
concurrent-ruby (1.1.
|
44
|
+
concurrent-ruby (1.1.10)
|
45
45
|
crass (1.0.6)
|
46
46
|
diff-lcs (1.5.0)
|
47
|
-
docile (1.4.0)
|
48
47
|
erubi (1.10.0)
|
49
48
|
i18n (1.10.0)
|
50
49
|
concurrent-ruby (~> 1.0)
|
51
|
-
loofah (2.
|
50
|
+
loofah (2.16.0)
|
52
51
|
crass (~> 1.0.2)
|
53
52
|
nokogiri (>= 1.5.9)
|
54
53
|
method_source (1.0.0)
|
55
54
|
minitest (5.15.0)
|
56
|
-
nokogiri (1.13.
|
55
|
+
nokogiri (1.13.4-x86_64-linux)
|
57
56
|
racc (~> 1.4)
|
58
|
-
parallel (1.
|
59
|
-
parser (3.1.
|
57
|
+
parallel (1.22.1)
|
58
|
+
parser (3.1.2.0)
|
60
59
|
ast (~> 2.4.1)
|
61
60
|
racc (1.6.0)
|
62
61
|
rack (2.2.3)
|
@@ -67,16 +66,16 @@ GEM
|
|
67
66
|
nokogiri (>= 1.6)
|
68
67
|
rails-html-sanitizer (1.4.2)
|
69
68
|
loofah (~> 2.3)
|
70
|
-
railties (7.0.2.
|
71
|
-
actionpack (= 7.0.2.
|
72
|
-
activesupport (= 7.0.2.
|
69
|
+
railties (7.0.2.3)
|
70
|
+
actionpack (= 7.0.2.3)
|
71
|
+
activesupport (= 7.0.2.3)
|
73
72
|
method_source
|
74
73
|
rake (>= 12.2)
|
75
74
|
thor (~> 1.0)
|
76
75
|
zeitwerk (~> 2.5)
|
77
76
|
rainbow (3.1.1)
|
78
77
|
rake (13.0.6)
|
79
|
-
regexp_parser (2.
|
78
|
+
regexp_parser (2.3.1)
|
80
79
|
rexml (3.2.5)
|
81
80
|
rspec (3.11.0)
|
82
81
|
rspec-core (~> 3.11.0)
|
@@ -87,35 +86,29 @@ GEM
|
|
87
86
|
rspec-expectations (3.11.0)
|
88
87
|
diff-lcs (>= 1.2.0, < 2.0)
|
89
88
|
rspec-support (~> 3.11.0)
|
90
|
-
rspec-mocks (3.11.
|
89
|
+
rspec-mocks (3.11.1)
|
91
90
|
diff-lcs (>= 1.2.0, < 2.0)
|
92
91
|
rspec-support (~> 3.11.0)
|
93
92
|
rspec-support (3.11.0)
|
94
|
-
rubocop (1.
|
93
|
+
rubocop (1.28.2)
|
95
94
|
parallel (~> 1.10)
|
96
95
|
parser (>= 3.1.0.0)
|
97
96
|
rainbow (>= 2.2.2, < 4.0)
|
98
97
|
regexp_parser (>= 1.8, < 3.0)
|
99
98
|
rexml
|
100
|
-
rubocop-ast (>= 1.
|
99
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
101
100
|
ruby-progressbar (~> 1.7)
|
102
101
|
unicode-display_width (>= 1.4.0, < 3.0)
|
103
|
-
rubocop-ast (1.
|
102
|
+
rubocop-ast (1.17.0)
|
104
103
|
parser (>= 3.1.1.0)
|
105
|
-
rubocop-performance (1.13.
|
104
|
+
rubocop-performance (1.13.3)
|
106
105
|
rubocop (>= 1.7.0, < 2.0)
|
107
106
|
rubocop-ast (>= 0.4.0)
|
108
107
|
ruby-progressbar (1.11.0)
|
109
|
-
simplecov (0.21.2)
|
110
|
-
docile (~> 1.1)
|
111
|
-
simplecov-html (~> 0.11)
|
112
|
-
simplecov_json_formatter (~> 0.1)
|
113
|
-
simplecov-html (0.12.3)
|
114
|
-
simplecov_json_formatter (0.1.4)
|
115
108
|
sqlite3 (1.4.2)
|
116
|
-
standard (1.
|
117
|
-
rubocop (= 1.
|
118
|
-
rubocop-performance (= 1.13.
|
109
|
+
standard (1.11.0)
|
110
|
+
rubocop (= 1.28.2)
|
111
|
+
rubocop-performance (= 1.13.3)
|
119
112
|
thor (1.2.1)
|
120
113
|
tzinfo (2.0.4)
|
121
114
|
concurrent-ruby (~> 1.0)
|
@@ -132,10 +125,8 @@ DEPENDENCIES
|
|
132
125
|
combustion (~> 1.3)
|
133
126
|
rake (~> 13.0)
|
134
127
|
rspec (~> 3.0)
|
135
|
-
rubocop (~> 1.25)
|
136
|
-
simplecov (~> 0.21)
|
137
128
|
sqlite3 (~> 1.4)
|
138
|
-
standard (~> 1.
|
129
|
+
standard (~> 1.11)
|
139
130
|
unreliable!
|
140
131
|
|
141
132
|
BUNDLED WITH
|
data/lib/unreliable/version.rb
CHANGED
data/spec/examples.txt
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
example_id | status | run_time |
|
2
2
|
---------------------------------- | ------ | --------------- |
|
3
|
-
./spec/env_spec.rb[1:1] | passed | 0.
|
4
|
-
./spec/env_spec.rb[1:2] | passed | 0.
|
5
|
-
./spec/model_select_spec.rb[1:1] | passed | 0.
|
6
|
-
./spec/model_select_spec.rb[1:2] | passed | 0.
|
7
|
-
./spec/model_select_spec.rb[1:3] | passed | 0.
|
8
|
-
./spec/model_select_spec.rb[1:4] | passed | 0.
|
9
|
-
./spec/model_subquery_spec.rb[1:1] | passed | 0.
|
10
|
-
./spec/model_update_spec.rb[1:1] | passed | 0.
|
11
|
-
./spec/railtie_spec.rb[1:1] | passed | 0.
|
3
|
+
./spec/env_spec.rb[1:1] | passed | 0.00986 seconds |
|
4
|
+
./spec/env_spec.rb[1:2] | passed | 0.00041 seconds |
|
5
|
+
./spec/model_select_spec.rb[1:1] | passed | 0.00035 seconds |
|
6
|
+
./spec/model_select_spec.rb[1:2] | passed | 0.00044 seconds |
|
7
|
+
./spec/model_select_spec.rb[1:3] | passed | 0.0005 seconds |
|
8
|
+
./spec/model_select_spec.rb[1:4] | passed | 0.00061 seconds |
|
9
|
+
./spec/model_subquery_spec.rb[1:1] | passed | 0.00125 seconds |
|
10
|
+
./spec/model_update_spec.rb[1:1] | passed | 0.00012 seconds |
|
11
|
+
./spec/railtie_spec.rb[1:1] | passed | 0.00062 seconds |
|
12
12
|
./spec/railtie_spec.rb[1:2] | passed | 0.00018 seconds |
|
13
|
-
./spec/version_spec.rb[1:1] | passed | 0.
|
14
|
-
./spec/version_spec.rb[1:2] | passed | 0.
|
13
|
+
./spec/version_spec.rb[1:1] | passed | 0.00127 seconds |
|
14
|
+
./spec/version_spec.rb[1:2] | passed | 0.00016 seconds |
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unreliable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James McCarthy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -120,34 +120,6 @@ dependencies:
|
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '3.0'
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
|
-
name: rubocop
|
125
|
-
requirement: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - "~>"
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '1.25'
|
130
|
-
type: :development
|
131
|
-
prerelease: false
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
requirements:
|
134
|
-
- - "~>"
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: '1.25'
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
|
-
name: simplecov
|
139
|
-
requirement: !ruby/object:Gem::Requirement
|
140
|
-
requirements:
|
141
|
-
- - "~>"
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: '0.21'
|
144
|
-
type: :development
|
145
|
-
prerelease: false
|
146
|
-
version_requirements: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - "~>"
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '0.21'
|
151
123
|
- !ruby/object:Gem::Dependency
|
152
124
|
name: sqlite3
|
153
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,14 +140,14 @@ dependencies:
|
|
168
140
|
requirements:
|
169
141
|
- - "~>"
|
170
142
|
- !ruby/object:Gem::Version
|
171
|
-
version: '1.
|
143
|
+
version: '1.11'
|
172
144
|
type: :development
|
173
145
|
prerelease: false
|
174
146
|
version_requirements: !ruby/object:Gem::Requirement
|
175
147
|
requirements:
|
176
148
|
- - "~>"
|
177
149
|
- !ruby/object:Gem::Version
|
178
|
-
version: '1.
|
150
|
+
version: '1.11'
|
179
151
|
description: |
|
180
152
|
Unreliable helps uncover bugs in Rails apps that rely on ambiguous database ordering.
|
181
153
|
With it installed, a test suite is less likely to accidentally succeed.
|