edge_rider 1.1.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +99 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +16 -6
- data/Gemfile +1 -0
- data/Gemfile.4.2.mysql2 +2 -2
- data/Gemfile.4.2.mysql2.lock +20 -20
- data/Gemfile.4.2.pg +1 -1
- data/Gemfile.4.2.pg.lock +18 -18
- data/Gemfile.5.2.mysql2 +2 -2
- data/Gemfile.5.2.mysql2.lock +6 -6
- data/Gemfile.5.2.pg +1 -1
- data/Gemfile.5.2.pg.lock +4 -4
- data/{Gemfile.6.0.pg → Gemfile.6.1.pg} +2 -2
- data/Gemfile.6.1.pg.lock +78 -0
- data/Gemfile.lock +1 -0
- data/README.md +84 -60
- data/edge_rider.gemspec +24 -16
- data/lib/edge_rider/util.rb +1 -1
- data/lib/edge_rider/version.rb +1 -1
- metadata +13 -24
- data/.travis.yml +0 -51
- data/Gemfile.3.2.mysql2 +0 -17
- data/Gemfile.3.2.mysql2.lock +0 -72
- data/Gemfile.6.0.pg.lock +0 -74
- data/spec/edge_rider/collect_column_spec.rb +0 -85
- data/spec/edge_rider/collect_ids_spec.rb +0 -108
- data/spec/edge_rider/origin_class_spec.rb +0 -32
- data/spec/edge_rider/preload_associations_spec.rb +0 -31
- data/spec/edge_rider/scoped_spec.rb +0 -53
- data/spec/edge_rider/to_id_query_spec.rb +0 -29
- data/spec/edge_rider/traverse_association_spec.rb +0 -175
- data/spec/edge_rider/util_spec.rb +0 -5
- data/spec/spec_helper.rb +0 -14
- data/spec/support/database.rb +0 -39
- data/spec/support/database.sample.yml +0 -10
- data/spec/support/database.travis.yml +0 -9
- data/spec/support/models.rb +0 -97
@@ -1,7 +1,7 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Runtime dependencies
|
4
|
-
gem 'activerecord', '~>6.
|
4
|
+
gem 'activerecord', '~>6.1.3'
|
5
5
|
gem 'pg'
|
6
6
|
|
7
7
|
# Development dependencies
|
@@ -9,7 +9,7 @@ gem 'rake'
|
|
9
9
|
gem 'database_cleaner'
|
10
10
|
gem 'has_defaults' # used by test models
|
11
11
|
gem 'rspec'
|
12
|
-
gem 'gemika'
|
12
|
+
gem 'gemika', '>=0.5.0'
|
13
13
|
gem 'pry-byebug'
|
14
14
|
|
15
15
|
# Gem under test
|
data/Gemfile.6.1.pg.lock
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
edge_rider (2.0.0)
|
5
|
+
activerecord (>= 3.2)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (6.1.3)
|
11
|
+
activesupport (= 6.1.3)
|
12
|
+
activerecord (6.1.3)
|
13
|
+
activemodel (= 6.1.3)
|
14
|
+
activesupport (= 6.1.3)
|
15
|
+
activesupport (6.1.3)
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
17
|
+
i18n (>= 1.6, < 2)
|
18
|
+
minitest (>= 5.1)
|
19
|
+
tzinfo (~> 2.0)
|
20
|
+
zeitwerk (~> 2.3)
|
21
|
+
byebug (11.1.3)
|
22
|
+
coderay (1.1.3)
|
23
|
+
concurrent-ruby (1.1.8)
|
24
|
+
database_cleaner (2.0.1)
|
25
|
+
database_cleaner-active_record (~> 2.0.0)
|
26
|
+
database_cleaner-active_record (2.0.0)
|
27
|
+
activerecord (>= 5.a)
|
28
|
+
database_cleaner-core (~> 2.0.0)
|
29
|
+
database_cleaner-core (2.0.1)
|
30
|
+
diff-lcs (1.4.4)
|
31
|
+
gemika (0.5.0)
|
32
|
+
has_defaults (0.4.4)
|
33
|
+
activerecord
|
34
|
+
i18n (1.8.9)
|
35
|
+
concurrent-ruby (~> 1.0)
|
36
|
+
method_source (1.0.0)
|
37
|
+
minitest (5.14.4)
|
38
|
+
pg (1.2.3)
|
39
|
+
pry (0.13.1)
|
40
|
+
coderay (~> 1.1)
|
41
|
+
method_source (~> 1.0)
|
42
|
+
pry-byebug (3.9.0)
|
43
|
+
byebug (~> 11.0)
|
44
|
+
pry (~> 0.13.0)
|
45
|
+
rake (13.0.3)
|
46
|
+
rspec (3.10.0)
|
47
|
+
rspec-core (~> 3.10.0)
|
48
|
+
rspec-expectations (~> 3.10.0)
|
49
|
+
rspec-mocks (~> 3.10.0)
|
50
|
+
rspec-core (3.10.1)
|
51
|
+
rspec-support (~> 3.10.0)
|
52
|
+
rspec-expectations (3.10.1)
|
53
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
54
|
+
rspec-support (~> 3.10.0)
|
55
|
+
rspec-mocks (3.10.2)
|
56
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
57
|
+
rspec-support (~> 3.10.0)
|
58
|
+
rspec-support (3.10.2)
|
59
|
+
tzinfo (2.0.4)
|
60
|
+
concurrent-ruby (~> 1.0)
|
61
|
+
zeitwerk (2.4.2)
|
62
|
+
|
63
|
+
PLATFORMS
|
64
|
+
ruby
|
65
|
+
|
66
|
+
DEPENDENCIES
|
67
|
+
activerecord (~> 6.1.3)
|
68
|
+
database_cleaner
|
69
|
+
edge_rider!
|
70
|
+
gemika (>= 0.5.0)
|
71
|
+
has_defaults
|
72
|
+
pg
|
73
|
+
pry-byebug
|
74
|
+
rake
|
75
|
+
rspec
|
76
|
+
|
77
|
+
BUNDLED WITH
|
78
|
+
2.2.26
|
data/Gemfile.lock
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.6.1.pg.lock
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
Edge Rider [![
|
2
|
-
====================================
|
1
|
+
# Edge Rider [![Tests](https://github.com/makandra/edge_rider/workflows/Tests/badge.svg)](https://github.com/makandra/edge_rider/actions)
|
3
2
|
|
4
|
-
Power tools for ActiveRecord relations (scopes)
|
5
|
-
-------------------------------------------------
|
3
|
+
## Power tools for ActiveRecord relations (scopes)
|
6
4
|
|
7
5
|
In ActiveRecord, relations (or scopes) allow you to construct complex queries piece-by-piece
|
8
6
|
and then trigger a query or update at a precisely defined moment. If you write any kind
|
@@ -14,9 +12,7 @@ Edge Rider was created with two intents:
|
|
14
12
|
2. Provide a stable API for working with relations across multiple versions of Rails (since
|
15
13
|
Rails has a tradition of breaking details of its relation API every other release).
|
16
14
|
|
17
|
-
|
18
|
-
Usage
|
19
|
-
-----
|
15
|
+
## Usage
|
20
16
|
|
21
17
|
### Traversing a relation along an association
|
22
18
|
|
@@ -25,20 +21,26 @@ returns a new relation by "pivoting" around a named association.
|
|
25
21
|
|
26
22
|
Say we have a `Post` model and each `Post` belongs to an author:
|
27
23
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
```ruby
|
25
|
+
class Post < ActiveRecord::Base
|
26
|
+
belongs_to :author
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
32
30
|
To turn a relation of posts into a relation of its authors:
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
```ruby
|
33
|
+
posts = Post.where(archived: false)
|
34
|
+
authors = posts.traverse_association(:author)
|
35
|
+
```
|
36
|
+
|
37
37
|
You can traverse multiple associations in a single call.
|
38
38
|
E.g. to turn a relation of posts into a relation of all posts of their authors:
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
```ruby
|
41
|
+
posts = Post.where(archived: false)
|
42
|
+
posts_by_same_authors = posts.traverse_association(:author, :posts)
|
43
|
+
```
|
42
44
|
|
43
45
|
*Implementation note:* The traversal is achieved internally by collecting all foreign keys in the current relation
|
44
46
|
and return a new relation with an `IN(...)` query (which is very efficient even for many thousand keys).
|
@@ -56,8 +58,10 @@ its ID.
|
|
56
58
|
Edge Rider has a better way. Your relations gain a method `#collect_ids` that will
|
57
59
|
fetch all IDs in a single query without instantiating a single ActiveRecord object:
|
58
60
|
|
59
|
-
|
60
|
-
|
61
|
+
```ruby
|
62
|
+
posts = Post.where(archived: false)
|
63
|
+
post_ids = posts.collect_ids
|
64
|
+
```
|
61
65
|
|
62
66
|
*Implementation note:* `#collect_ids` delegates to [`#pluck`](https://apidock.com/rails/ActiveRecord/Calculations/pluck),
|
63
67
|
which can be used for the same purpose.
|
@@ -68,33 +72,39 @@ which can be used for the same purpose.
|
|
68
72
|
When writing a method that filters by record IDs, you can make it more useful by accepting
|
69
73
|
any kind of argument that can be turned into a list of IDs:
|
70
74
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
75
|
+
```ruby
|
76
|
+
Post.by_author(1)
|
77
|
+
Post.by_author([1, 2, 3])
|
78
|
+
Post.by_author(Author.find(1))
|
79
|
+
Post.by_author([Author.find(1), Author.find(2)])
|
80
|
+
Post.by_author(Author.active)
|
81
|
+
```
|
76
82
|
|
77
83
|
For this use case Edge Rider defines `#collect_ids` on many different types:
|
78
84
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
85
|
+
```ruby
|
86
|
+
Post.where(id: [1, 2]).collect_ids # => [1, 2]
|
87
|
+
[Post.find(1), Post.find(2)].collect_ids # => [1, 2]
|
88
|
+
Post.find(1).collect_ids # => [1]
|
89
|
+
[1, 2, 3].collect_ids # => [1, 2, 3]
|
90
|
+
1.collect_ids # => [1]
|
91
|
+
```
|
84
92
|
|
85
93
|
You can now write `Post.by_author` from the example above without a single `if` or `case`:
|
86
94
|
|
87
|
-
|
88
|
-
|
89
|
-
|
95
|
+
```ruby
|
96
|
+
class Post < ActiveRecord::Base
|
97
|
+
|
98
|
+
belongs_to :author
|
99
|
+
|
100
|
+
def self.for_author(author_or_authors)
|
101
|
+
where(author_id: author_or_authors.collect_ids)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
```
|
90
106
|
|
91
|
-
def self.for_author(author_or_authors)
|
92
|
-
where(author_id: author_or_authors.collect_ids)
|
93
|
-
end
|
94
107
|
|
95
|
-
end
|
96
|
-
|
97
|
-
|
98
108
|
### Efficiently collect all values in a relation's column
|
99
109
|
|
100
110
|
You often want to ask a relation for an array of all values ofin a given column.
|
@@ -106,8 +116,10 @@ its column value.
|
|
106
116
|
Edge Rider has a better way. Your relations gain a method `#collect_column` that will
|
107
117
|
fetch all column values in a single query without instantiating a single ActiveRecord object:
|
108
118
|
|
109
|
-
|
110
|
-
|
119
|
+
```ruby
|
120
|
+
posts = Post.where(archived: false)
|
121
|
+
subjects = posts.collect_column(:subject)
|
122
|
+
```
|
111
123
|
|
112
124
|
*Implementation note:* `#collect_column` delegates to [`#pluck`](https://apidock.com/rails/ActiveRecord/Calculations/pluck),
|
113
125
|
which can be used for the same effect.
|
@@ -116,8 +128,10 @@ which can be used for the same effect.
|
|
116
128
|
|
117
129
|
If you only care about *unique* values, use the `distinct: true` option:
|
118
130
|
|
119
|
-
|
120
|
-
|
131
|
+
```ruby
|
132
|
+
posts = Post.where(archived: false)
|
133
|
+
distinct_subjects = posts.collect_column(:subject, distinct: true)
|
134
|
+
```
|
121
135
|
|
122
136
|
With this options duplicates are discarded by the database before making their way into Ruby.
|
123
137
|
|
@@ -136,15 +150,21 @@ mashes together strings that mostly happen to look like a MySQL query in the end
|
|
136
150
|
|
137
151
|
Edge Rider gives your relations a new method `#to_id_query`:
|
138
152
|
|
139
|
-
|
153
|
+
```ruby
|
154
|
+
Site.joins(user).where(:users: { name: 'Bruce' }).to_id_query
|
155
|
+
```
|
140
156
|
|
141
157
|
`#to_id_query` will immediately run an SQL query where it collects all the IDs that match your relation:
|
142
158
|
|
143
|
-
|
159
|
+
```sql
|
160
|
+
SELECT sites.id FROM sites INNER JOIN users WHERE sites.user_id = sites.id AND users.name = 'Bruce'
|
161
|
+
```
|
144
162
|
|
145
163
|
It now uses these IDs to return a new relation that has **no joins** and a single condition on the `id` column:
|
146
164
|
|
147
|
-
|
165
|
+
```sql
|
166
|
+
SELECT * FROM sites WHERE sites.user_id IN (3, 17, 103)
|
167
|
+
```
|
148
168
|
|
149
169
|
|
150
170
|
### Preload associations for loaded ActiveRecords
|
@@ -153,23 +173,26 @@ Sometimes you want to fetch associations for records that you already instantiat
|
|
153
173
|
|
154
174
|
Edge Rider gives your model classes and instances a method `preload_associations`. The method can be used to preload associations for loaded objects like this:
|
155
175
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
176
|
+
```ruby
|
177
|
+
@user = User.find(params[:id])
|
178
|
+
User.preload_associations [@user], { threads: { posts: :author }, messages: :sender }
|
179
|
+
# or
|
180
|
+
user.preload_associations { threads: { posts: :author }, messages: :sender }
|
181
|
+
```
|
160
182
|
|
161
183
|
*Implementation note*: Rails 3.0 already has a method [`.preload_associations`](https://apidock.com/rails/ActiveRecord/AssociationPreload/ClassMethods/preload_associations)
|
162
184
|
which Edge Rider merely makes public. Edge Rider ports this method forward to Rails 3.1+.
|
163
185
|
|
164
186
|
|
165
|
-
|
166
187
|
### Retrieve the class a relation is based on
|
167
188
|
|
168
189
|
Edge Rider gives your relations a method `#origin_class` that returns the class the relation is based on.
|
169
190
|
This is useful e.g. to perform unscoped record look-up.
|
170
191
|
|
171
|
-
|
172
|
-
|
192
|
+
```ruby
|
193
|
+
Post.recent.origin_class
|
194
|
+
# => Post
|
195
|
+
```
|
173
196
|
|
174
197
|
Note that `#origin_class` it roughly equivalent to the blockless form of [`unscoped`](https://apidock.com/rails/ActiveRecord/Scoping/Default/ClassMethods/unscoped) from Rails 3.2+,
|
175
198
|
but it works consistently across all Rails versions.
|
@@ -182,8 +205,10 @@ Edge Rider ports `Model.scoped` forward to Rails 4+ (taken from
|
|
182
205
|
enables you to consistently turn models into scopes or narrow down scopes
|
183
206
|
across all versions of Rails.
|
184
207
|
|
185
|
-
|
186
|
-
|
208
|
+
```ruby
|
209
|
+
User.scoped # just calls User.all in Rails 4
|
210
|
+
User.active.scoped(conditions: { admin: true })
|
211
|
+
```
|
187
212
|
|
188
213
|
*Implementation note*: Rails 3 already have a method
|
189
214
|
[`.scoped`](https://apidock.com/rails/ActiveRecord/Scoping/Named/ClassMethods/scoped) which Edge Rider does not touch. Rails 4 has removed this method and
|
@@ -196,18 +221,18 @@ slightly different in all versions of Rails (see
|
|
196
221
|
methods are not modified.
|
197
222
|
|
198
223
|
|
199
|
-
Installation
|
200
|
-
------------
|
224
|
+
## Installation
|
201
225
|
|
202
226
|
In your `Gemfile` say:
|
203
227
|
|
204
|
-
|
228
|
+
```ruby
|
229
|
+
gem 'edge_rider'
|
230
|
+
```
|
205
231
|
|
206
232
|
Now run `bundle install` and restart your server.
|
207
233
|
|
208
234
|
|
209
|
-
Development
|
210
|
-
-----------
|
235
|
+
## Development
|
211
236
|
|
212
237
|
- There are tests in `spec`. We only accept PRs with tests.
|
213
238
|
- We currently develop using the Ruby version in `.ruby-version`. It is required to change the Ruby Version to cover all Rails version or just use Travis CI.
|
@@ -224,7 +249,6 @@ If you would like to contribute:
|
|
224
249
|
- Send me a pull request.
|
225
250
|
|
226
251
|
|
227
|
-
Credits
|
228
|
-
-------
|
252
|
+
## Credits
|
229
253
|
|
230
254
|
Henning Koch from [makandra](http://makandra.com/)
|
data/edge_rider.gemspec
CHANGED
@@ -1,21 +1,29 @@
|
|
1
|
-
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
2
3
|
require "edge_rider/version"
|
3
4
|
|
4
|
-
Gem::Specification.new do |
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
s.summary = 'Power tools for ActiveRecord relations (scopes)'
|
11
|
-
s.description = s.summary
|
12
|
-
s.license = 'MIT'
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'edge_rider'
|
7
|
+
spec.version = EdgeRider::VERSION
|
8
|
+
spec.required_ruby_version = '>= 2.3.0'
|
9
|
+
spec.authors = ['Henning Koch']
|
10
|
+
spec.email = ['henning.koch@makandra.de']
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
spec.summary = 'Power tools for ActiveRecord relations (scopes)'
|
13
|
+
spec.description = spec.summary
|
14
|
+
spec.homepage = 'https://github.com/makandra/edge_rider'
|
15
|
+
spec.license = 'MIT'
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
# Specify which files should be added to the gem when it is released.
|
18
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
19
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
20
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
21
|
+
end
|
22
|
+
spec.bindir = 'exe'
|
23
|
+
spec.executables = spec.files.grep(%r(^exe/)) { |f| File.basename(f) }
|
24
|
+
spec.require_paths = ['lib']
|
25
|
+
|
26
|
+
spec.add_dependency('activerecord', '>=3.2')
|
27
|
+
|
28
|
+
# Development dependencies are defined in the Gemfile (therefore no `spec.add_development_dependency` directives)
|
21
29
|
end
|
data/lib/edge_rider/util.rb
CHANGED
@@ -52,7 +52,7 @@ module EdgeRider
|
|
52
52
|
# but Rails 2 does not have it.
|
53
53
|
other_options = options.slice!(:conditions)
|
54
54
|
scope = lambda { |*args| scoped(options) }
|
55
|
-
owner.send association, target, scope, other_options
|
55
|
+
owner.send association, target, scope, **other_options
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
data/lib/edge_rider/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edge_rider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -25,17 +25,18 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
description: Power tools for ActiveRecord relations (scopes)
|
28
|
-
email:
|
28
|
+
email:
|
29
|
+
- henning.koch@makandra.de
|
29
30
|
executables: []
|
30
31
|
extensions: []
|
31
32
|
extra_rdoc_files: []
|
32
33
|
files:
|
34
|
+
- ".github/workflows/test.yml"
|
33
35
|
- ".gitignore"
|
36
|
+
- ".rspec"
|
34
37
|
- ".ruby-version"
|
35
|
-
- ".travis.yml"
|
36
38
|
- CHANGELOG.md
|
37
|
-
- Gemfile
|
38
|
-
- Gemfile.3.2.mysql2.lock
|
39
|
+
- Gemfile
|
39
40
|
- Gemfile.4.2.mysql2
|
40
41
|
- Gemfile.4.2.mysql2.lock
|
41
42
|
- Gemfile.4.2.pg
|
@@ -44,8 +45,9 @@ files:
|
|
44
45
|
- Gemfile.5.2.mysql2.lock
|
45
46
|
- Gemfile.5.2.pg
|
46
47
|
- Gemfile.5.2.pg.lock
|
47
|
-
- Gemfile.6.
|
48
|
-
- Gemfile.6.
|
48
|
+
- Gemfile.6.1.pg
|
49
|
+
- Gemfile.6.1.pg.lock
|
50
|
+
- Gemfile.lock
|
49
51
|
- LICENSE
|
50
52
|
- README.md
|
51
53
|
- Rakefile
|
@@ -61,19 +63,6 @@ files:
|
|
61
63
|
- lib/edge_rider/traverse_association.rb
|
62
64
|
- lib/edge_rider/util.rb
|
63
65
|
- lib/edge_rider/version.rb
|
64
|
-
- spec/edge_rider/collect_column_spec.rb
|
65
|
-
- spec/edge_rider/collect_ids_spec.rb
|
66
|
-
- spec/edge_rider/origin_class_spec.rb
|
67
|
-
- spec/edge_rider/preload_associations_spec.rb
|
68
|
-
- spec/edge_rider/scoped_spec.rb
|
69
|
-
- spec/edge_rider/to_id_query_spec.rb
|
70
|
-
- spec/edge_rider/traverse_association_spec.rb
|
71
|
-
- spec/edge_rider/util_spec.rb
|
72
|
-
- spec/spec_helper.rb
|
73
|
-
- spec/support/database.rb
|
74
|
-
- spec/support/database.sample.yml
|
75
|
-
- spec/support/database.travis.yml
|
76
|
-
- spec/support/models.rb
|
77
66
|
homepage: https://github.com/makandra/edge_rider
|
78
67
|
licenses:
|
79
68
|
- MIT
|
@@ -86,14 +75,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
75
|
requirements:
|
87
76
|
- - ">="
|
88
77
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
78
|
+
version: 2.3.0
|
90
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
80
|
requirements:
|
92
81
|
- - ">="
|
93
82
|
- !ruby/object:Gem::Version
|
94
83
|
version: '0'
|
95
84
|
requirements: []
|
96
|
-
rubygems_version: 3.
|
85
|
+
rubygems_version: 3.2.26
|
97
86
|
signing_key:
|
98
87
|
specification_version: 4
|
99
88
|
summary: Power tools for ActiveRecord relations (scopes)
|