active_record-union_relation 0.1.1 → 0.2.1
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/CHANGELOG.md +16 -1
- data/README.md +6 -14
- data/active_record-union_relation.gemspec +31 -29
- data/lib/active_record/union_relation/version.rb +1 -1
- data/lib/active_record/union_relation.rb +55 -24
- metadata +24 -32
- data/.github/dependabot.yml +0 -6
- data/.github/workflows/main.yml +0 -46
- data/.gitignore +0 -8
- data/Gemfile +0 -5
- data/Gemfile.lock +0 -149
- data/Rakefile +0 -12
- data/bin/console +0 -7
- data/bin/setup +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d75105a966e30a6a18ed59c42c39bd22d5685e60b3f8d96eba472a2f5b894507
|
4
|
+
data.tar.gz: 86a4699ab3cb5f6af0d2748607d16de5ab4b1b100cf0cd41ab26b1707686b79e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ba4ea419535dc83c1466220fc6546a76c3970fb3152d210a98dc7a40eac7fef54b127d3e1056bc9e257c4fd30a419bf3a186da5334205ef096de74248effd5f
|
7
|
+
data.tar.gz: 4cac1923b62d6505ee0cb0701329d61164a8e2301bad505d93c01b31a70fb1bc4d981cf87cf9ea68455be35458bde4c76a2eca67570ff527026bfb8f500e4592
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [0.2.1] - 2024-05-29
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- Limit files in packaged gem.
|
14
|
+
|
15
|
+
## [0.2.0] - 2024-02-09
|
16
|
+
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- Support for sqlite.
|
20
|
+
- Support for scoped column names.
|
21
|
+
|
9
22
|
## [0.1.1] - 2021-11-17
|
10
23
|
|
11
24
|
### Changed
|
@@ -18,6 +31,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
18
31
|
|
19
32
|
- 🎉 Initial release. 🎉
|
20
33
|
|
21
|
-
[unreleased]: https://github.com/kddnewton/active_record-union_relation/compare/v0.
|
34
|
+
[unreleased]: https://github.com/kddnewton/active_record-union_relation/compare/v0.2.1...HEAD
|
35
|
+
[0.2.1]: https://github.com/kddnewton/active_record-union_relation/compare/v0.2.0...v0.2.1
|
36
|
+
[0.2.0]: https://github.com/kddnewton/active_record-union_relation/compare/v0.1.1...v0.2.0
|
22
37
|
[0.1.1]: https://github.com/kddnewton/active_record-union_relation/compare/v0.1.0...v0.1.1
|
23
38
|
[0.1.0]: https://github.com/kddnewton/active_record-union_relation/compare/a71bb8...v0.1.0
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# ActiveRecord::UnionRelation
|
2
2
|
|
3
3
|
[](https://github.com/kddnewton/active_record-union_relation/actions)
|
4
|
+
[](https://rubygems.org/gems/active_record-union_relation)
|
4
5
|
|
5
6
|
There are times when you want to use SQL's [UNION](https://www.w3schools.com/sql/sql_union.asp) operator to pull rows from multiple relations, but you still want to maintain the query-builder interface of ActiveRecord. This gem allows you to do that with minimal syntax.
|
6
7
|
|
@@ -9,7 +10,7 @@ There are times when you want to use SQL's [UNION](https://www.w3schools.com/sql
|
|
9
10
|
Add this line to your application's Gemfile:
|
10
11
|
|
11
12
|
```ruby
|
12
|
-
gem
|
13
|
+
gem "active_record-union_relation"
|
13
14
|
```
|
14
15
|
|
15
16
|
And then execute:
|
@@ -46,7 +47,7 @@ Now, let's pull all of the records matching a specific term. For `Post`, we'll p
|
|
46
47
|
```ruby
|
47
48
|
# Let's get a local variable that we'll use to reference within each of our
|
48
49
|
# subqueries. Presumably this would come from some kind of user input.
|
49
|
-
term =
|
50
|
+
term = "foo"
|
50
51
|
|
51
52
|
# First, we call ActiveRecord::union. The arguments are the names of the columns
|
52
53
|
# that will be aliased from each source relation. It also accepts a block that
|
@@ -58,7 +59,7 @@ relation =
|
|
58
59
|
# just for this one table. That can include any kind of
|
59
60
|
# joins/conditions/orders etc. that it needs to. In this case we'll need
|
60
61
|
# published: true and a matching query.
|
61
|
-
posts = Post.where(published: true).where(
|
62
|
+
posts = Post.where(published: true).where("title LIKE ?", "%#{term}%")
|
62
63
|
|
63
64
|
# Next, we'll add that posts relation as a subquery into the union. The
|
64
65
|
# number of arguments here must directly align with the number of arguments
|
@@ -73,12 +74,12 @@ relation =
|
|
73
74
|
# explicitly pulling post_id, we'll actually be able to call .post on the
|
74
75
|
# comment records that get pulled since we alias them back when we
|
75
76
|
# instantiate the objects.
|
76
|
-
comments = Comment.where(
|
77
|
+
comments = Comment.where("body LIKE ?", "%#{term}%")
|
77
78
|
union.add comments, :id, :post_id, :body
|
78
79
|
|
79
80
|
# Finally, we'll pull the tag records that we want and add them into the
|
80
81
|
# overall union as well.
|
81
|
-
tags = Tag.where(
|
82
|
+
tags = Tag.where("name LIKE ?", "%#{term}%")
|
82
83
|
union.add tags, :id, nil, :name
|
83
84
|
end
|
84
85
|
|
@@ -114,15 +115,6 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
114
115
|
|
115
116
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
116
117
|
|
117
|
-
To check types using `rbs`, you can run:
|
118
|
-
|
119
|
-
```sh
|
120
|
-
RBS_TEST_TARGET='ActiveRecord::UnionRelation::*' \
|
121
|
-
ruby -rrbs/test/setup \
|
122
|
-
-Itest -Isig/active_record/union_relation.rbs \
|
123
|
-
test/active_record/union_relation_test.rb
|
124
|
-
```
|
125
|
-
|
126
118
|
## Contributing
|
127
119
|
|
128
120
|
Bug reports and pull requests are welcome on GitHub at https://github.com/kddnewton/active_record-union_relation.
|
@@ -1,41 +1,43 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "lib/active_record/union_relation/version"
|
4
4
|
|
5
5
|
version = ActiveRecord::UnionRelation::VERSION
|
6
|
-
repository =
|
6
|
+
repository = "https://github.com/kddnewton/active_record-union_relation"
|
7
7
|
|
8
8
|
Gem::Specification.new do |spec|
|
9
|
-
spec.name
|
10
|
-
spec.version
|
11
|
-
spec.authors
|
12
|
-
spec.email
|
13
|
-
|
14
|
-
spec.summary
|
15
|
-
spec.homepage
|
16
|
-
spec.license
|
17
|
-
|
18
|
-
spec.metadata
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
9
|
+
spec.name = "active_record-union_relation"
|
10
|
+
spec.version = version
|
11
|
+
spec.authors = ["Kevin Newton"]
|
12
|
+
spec.email = ["kddnewton@gmail.com"]
|
13
|
+
|
14
|
+
spec.summary = "Create ActiveRecord relations from UNIONs"
|
15
|
+
spec.homepage = repository
|
16
|
+
spec.license = "MIT"
|
17
|
+
|
18
|
+
spec.metadata = {
|
19
|
+
"bug_tracker_uri" => "#{repository}/issues",
|
20
|
+
"changelog_uri" => "#{repository}/blob/v#{version}/CHANGELOG.md",
|
21
|
+
"source_code_uri" => repository,
|
22
|
+
"rubygems_mfa_required" => "true"
|
23
23
|
}
|
24
24
|
|
25
|
-
spec.files
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
spec.files = %w[
|
26
|
+
CHANGELOG.md
|
27
|
+
CODE_OF_CONDUCT.md
|
28
|
+
LICENSE
|
29
|
+
README.md
|
30
|
+
active_record-union_relation.gemspec
|
31
|
+
lib/active_record/union_relation.rb
|
32
|
+
lib/active_record/union_relation/version.rb
|
33
|
+
]
|
30
34
|
|
31
|
-
spec.
|
32
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
|
-
spec.require_paths = ['lib']
|
35
|
+
spec.require_paths = ["lib"]
|
34
36
|
|
35
|
-
spec.add_dependency
|
37
|
+
spec.add_dependency "activerecord", ">= 6"
|
36
38
|
|
37
|
-
spec.add_development_dependency
|
38
|
-
spec.add_development_dependency
|
39
|
-
spec.add_development_dependency
|
40
|
-
spec.add_development_dependency
|
39
|
+
spec.add_development_dependency "minitest"
|
40
|
+
spec.add_development_dependency "rails"
|
41
|
+
spec.add_development_dependency "rake"
|
42
|
+
spec.add_development_dependency "syntax_tree"
|
41
43
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "active_record"
|
4
|
+
require "active_record/union_relation/version"
|
5
5
|
|
6
6
|
module ActiveRecord
|
7
7
|
class UnionRelation
|
@@ -21,7 +21,7 @@ module ActiveRecord
|
|
21
21
|
# raise this error so there's not some weird undefined method behavior.
|
22
22
|
class NoConfiguredSubqueriesError < Error
|
23
23
|
def initialize
|
24
|
-
super(
|
24
|
+
super("No subqueries have been configured for this union")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -31,7 +31,7 @@ module ActiveRecord
|
|
31
31
|
# Sometimes you need some columns in some subqeries that you don't need in
|
32
32
|
# others. In order to accomplish that and still maintain the matching
|
33
33
|
# number of columns, you can put a null in space of a column instead.
|
34
|
-
NULL = Arel.sql(
|
34
|
+
NULL = Arel.sql("NULL")
|
35
35
|
|
36
36
|
attr_reader :relation, :model_name, :sources
|
37
37
|
|
@@ -42,18 +42,20 @@ module ActiveRecord
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def to_arel(columns, discriminator)
|
45
|
-
relation
|
46
|
-
.
|
47
|
-
|
48
|
-
|
45
|
+
relation.select(
|
46
|
+
Arel.sql("'#{model_name}'").as(quote_column_name(discriminator)),
|
47
|
+
*sources
|
48
|
+
.zip(columns)
|
49
|
+
.map do |(source, column)|
|
49
50
|
Arel.sql(source.to_s).as(quote_column_name(column))
|
50
51
|
end
|
51
|
-
|
52
|
-
.arel
|
52
|
+
).arel
|
53
53
|
end
|
54
54
|
|
55
55
|
def to_mapping(columns)
|
56
|
-
|
56
|
+
# Remove the scope_name/table_name when using table_name.column
|
57
|
+
sources_without_scope = sources.map { _1.split(".").last }
|
58
|
+
[model_name, columns.zip(sources_without_scope).to_h]
|
57
59
|
end
|
58
60
|
|
59
61
|
private
|
@@ -96,16 +98,45 @@ module ActiveRecord
|
|
96
98
|
mappings = subqueries.to_h { |subquery| subquery.to_mapping(columns) }
|
97
99
|
|
98
100
|
Class.new(model) do
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
101
|
+
# Set the inheritance column and register the discriminator as a string
|
102
|
+
# column so that Active Record will instantiate the right subclass.
|
103
|
+
self.inheritance_column = discriminator
|
104
|
+
attribute inheritance_column, :string
|
105
|
+
|
106
|
+
define_singleton_method(:instantiate) do |attrs, columns = {}, &block|
|
107
|
+
mapped = {}
|
108
|
+
mapping = mappings[attrs[inheritance_column]]
|
109
|
+
|
110
|
+
# Map the result set columns back to their original source column
|
111
|
+
# names. This ensures that even though the UNION saw them as the same
|
112
|
+
# columns our resulting records see them as their original names.
|
113
|
+
attrs.each do |key, value|
|
114
|
+
case mapping[key]
|
115
|
+
when Subquery::NULL
|
116
|
+
# Ignore columns that didn't have a value.
|
117
|
+
when nil
|
118
|
+
# If we don't have a mapping for this column, then it's the
|
119
|
+
# discriminator. Map that column directly.
|
120
|
+
mapped[key] = value
|
121
|
+
else
|
122
|
+
# Otherwise, use the mapping to map the column back to its
|
123
|
+
# original name.
|
124
|
+
mapped[mapping[key]] = value
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Now that we've mapped all of the columns, we can call super with the
|
129
|
+
# mapped values.
|
130
|
+
super(mapped, columns, &block)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Override the default find_sti_class method because it does sanity
|
134
|
+
# checks to ensure that the class you're trying to instantiate is a
|
135
|
+
# subclass of the current class. Since we want to explicitly _not_ do
|
136
|
+
# that, we will instead just check that it is a valid model class.
|
137
|
+
define_singleton_method(:find_sti_class) do |type_name|
|
138
|
+
type = type_name.constantize
|
139
|
+
type < ActiveRecord::Base ? type : super(type_name)
|
109
140
|
end
|
110
141
|
end
|
111
142
|
end
|
@@ -113,9 +144,9 @@ module ActiveRecord
|
|
113
144
|
def union_for(model)
|
114
145
|
Arel::Nodes::As.new(
|
115
146
|
subqueries
|
116
|
-
.map { |subquery| subquery.to_arel(columns, discriminator) }
|
147
|
+
.map { |subquery| subquery.to_arel(columns, discriminator).ast }
|
117
148
|
.inject { |left, right| Arel::Nodes::Union.new(left, right) },
|
118
|
-
Arel.sql(model.connection.quote_table_name(
|
149
|
+
Arel.sql(model.connection.quote_table_name("union"))
|
119
150
|
)
|
120
151
|
end
|
121
152
|
end
|
@@ -129,7 +160,7 @@ module ActiveRecord
|
|
129
160
|
# One additional column will be added to the query in order to discriminate
|
130
161
|
# between all of the unioned types. Then when the objects are going to be
|
131
162
|
# instantiated, we map the columns back to their original names.
|
132
|
-
def self.union(*columns, discriminator:
|
163
|
+
def self.union(*columns, discriminator: "discriminator")
|
133
164
|
UnionRelation.new(columns, discriminator).tap { |union| yield union }.all
|
134
165
|
end
|
135
166
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record-union_relation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Newton
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -28,58 +28,58 @@ dependencies:
|
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: syntax_tree
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
description:
|
84
84
|
email:
|
85
85
|
- kddnewton@gmail.com
|
@@ -87,19 +87,11 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- ".github/dependabot.yml"
|
91
|
-
- ".github/workflows/main.yml"
|
92
|
-
- ".gitignore"
|
93
90
|
- CHANGELOG.md
|
94
91
|
- CODE_OF_CONDUCT.md
|
95
|
-
- Gemfile
|
96
|
-
- Gemfile.lock
|
97
92
|
- LICENSE
|
98
93
|
- README.md
|
99
|
-
- Rakefile
|
100
94
|
- active_record-union_relation.gemspec
|
101
|
-
- bin/console
|
102
|
-
- bin/setup
|
103
95
|
- lib/active_record/union_relation.rb
|
104
96
|
- lib/active_record/union_relation/version.rb
|
105
97
|
homepage: https://github.com/kddnewton/active_record-union_relation
|
@@ -107,7 +99,7 @@ licenses:
|
|
107
99
|
- MIT
|
108
100
|
metadata:
|
109
101
|
bug_tracker_uri: https://github.com/kddnewton/active_record-union_relation/issues
|
110
|
-
changelog_uri: https://github.com/kddnewton/active_record-union_relation/blob/v0.
|
102
|
+
changelog_uri: https://github.com/kddnewton/active_record-union_relation/blob/v0.2.1/CHANGELOG.md
|
111
103
|
source_code_uri: https://github.com/kddnewton/active_record-union_relation
|
112
104
|
rubygems_mfa_required: 'true'
|
113
105
|
post_install_message:
|
@@ -125,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
117
|
- !ruby/object:Gem::Version
|
126
118
|
version: '0'
|
127
119
|
requirements: []
|
128
|
-
rubygems_version: 3.
|
120
|
+
rubygems_version: 3.5.3
|
129
121
|
signing_key:
|
130
122
|
specification_version: 4
|
131
123
|
summary: Create ActiveRecord relations from UNIONs
|
data/.github/dependabot.yml
DELETED
data/.github/workflows/main.yml
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
name: Main
|
2
|
-
on:
|
3
|
-
- push
|
4
|
-
- pull_request_target
|
5
|
-
jobs:
|
6
|
-
ci:
|
7
|
-
name: CI
|
8
|
-
runs-on: ubuntu-latest
|
9
|
-
env:
|
10
|
-
CI: true
|
11
|
-
DATABASE_URL: postgres://postgres:@localhost:5432/postgres
|
12
|
-
RAILS_ENV: test
|
13
|
-
services:
|
14
|
-
postgres:
|
15
|
-
image: postgres:11.5
|
16
|
-
ports:
|
17
|
-
- 5432:5432
|
18
|
-
options: >-
|
19
|
-
--health-cmd pg_isready
|
20
|
-
--health-interval 10s
|
21
|
-
--health-timeout 5s
|
22
|
-
--health-retries 5
|
23
|
-
steps:
|
24
|
-
- run: sudo apt-get -yqq install libpq-dev
|
25
|
-
- uses: actions/checkout@master
|
26
|
-
- uses: ruby/setup-ruby@v1
|
27
|
-
with:
|
28
|
-
ruby-version: 3.0
|
29
|
-
bundler-cache: true
|
30
|
-
- name: Test
|
31
|
-
run: |
|
32
|
-
bundle exec rake test
|
33
|
-
automerge:
|
34
|
-
name: AutoMerge
|
35
|
-
needs: ci
|
36
|
-
runs-on: ubuntu-latest
|
37
|
-
if: github.event_name == 'pull_request_target' && (github.actor == github.repository_owner || github.actor == 'dependabot[bot]')
|
38
|
-
steps:
|
39
|
-
- uses: actions/github-script@v3
|
40
|
-
with:
|
41
|
-
script: |
|
42
|
-
github.pulls.merge({
|
43
|
-
owner: context.payload.repository.owner.login,
|
44
|
-
repo: context.payload.repository.name,
|
45
|
-
pull_number: context.payload.pull_request.number
|
46
|
-
})
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,149 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
active_record-union_relation (0.1.1)
|
5
|
-
activerecord (>= 6)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
actioncable (6.1.4.1)
|
11
|
-
actionpack (= 6.1.4.1)
|
12
|
-
activesupport (= 6.1.4.1)
|
13
|
-
nio4r (~> 2.0)
|
14
|
-
websocket-driver (>= 0.6.1)
|
15
|
-
actionmailbox (6.1.4.1)
|
16
|
-
actionpack (= 6.1.4.1)
|
17
|
-
activejob (= 6.1.4.1)
|
18
|
-
activerecord (= 6.1.4.1)
|
19
|
-
activestorage (= 6.1.4.1)
|
20
|
-
activesupport (= 6.1.4.1)
|
21
|
-
mail (>= 2.7.1)
|
22
|
-
actionmailer (6.1.4.1)
|
23
|
-
actionpack (= 6.1.4.1)
|
24
|
-
actionview (= 6.1.4.1)
|
25
|
-
activejob (= 6.1.4.1)
|
26
|
-
activesupport (= 6.1.4.1)
|
27
|
-
mail (~> 2.5, >= 2.5.4)
|
28
|
-
rails-dom-testing (~> 2.0)
|
29
|
-
actionpack (6.1.4.1)
|
30
|
-
actionview (= 6.1.4.1)
|
31
|
-
activesupport (= 6.1.4.1)
|
32
|
-
rack (~> 2.0, >= 2.0.9)
|
33
|
-
rack-test (>= 0.6.3)
|
34
|
-
rails-dom-testing (~> 2.0)
|
35
|
-
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
36
|
-
actiontext (6.1.4.1)
|
37
|
-
actionpack (= 6.1.4.1)
|
38
|
-
activerecord (= 6.1.4.1)
|
39
|
-
activestorage (= 6.1.4.1)
|
40
|
-
activesupport (= 6.1.4.1)
|
41
|
-
nokogiri (>= 1.8.5)
|
42
|
-
actionview (6.1.4.1)
|
43
|
-
activesupport (= 6.1.4.1)
|
44
|
-
builder (~> 3.1)
|
45
|
-
erubi (~> 1.4)
|
46
|
-
rails-dom-testing (~> 2.0)
|
47
|
-
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
48
|
-
activejob (6.1.4.1)
|
49
|
-
activesupport (= 6.1.4.1)
|
50
|
-
globalid (>= 0.3.6)
|
51
|
-
activemodel (6.1.4.1)
|
52
|
-
activesupport (= 6.1.4.1)
|
53
|
-
activerecord (6.1.4.1)
|
54
|
-
activemodel (= 6.1.4.1)
|
55
|
-
activesupport (= 6.1.4.1)
|
56
|
-
activestorage (6.1.4.1)
|
57
|
-
actionpack (= 6.1.4.1)
|
58
|
-
activejob (= 6.1.4.1)
|
59
|
-
activerecord (= 6.1.4.1)
|
60
|
-
activesupport (= 6.1.4.1)
|
61
|
-
marcel (~> 1.0.0)
|
62
|
-
mini_mime (>= 1.1.0)
|
63
|
-
activesupport (6.1.4.1)
|
64
|
-
concurrent-ruby (~> 1.0, >= 1.0.2)
|
65
|
-
i18n (>= 1.6, < 2)
|
66
|
-
minitest (>= 5.1)
|
67
|
-
tzinfo (~> 2.0)
|
68
|
-
zeitwerk (~> 2.3)
|
69
|
-
builder (3.2.4)
|
70
|
-
concurrent-ruby (1.1.9)
|
71
|
-
crass (1.0.6)
|
72
|
-
erubi (1.10.0)
|
73
|
-
globalid (0.5.2)
|
74
|
-
activesupport (>= 5.0)
|
75
|
-
i18n (1.8.10)
|
76
|
-
concurrent-ruby (~> 1.0)
|
77
|
-
loofah (2.12.0)
|
78
|
-
crass (~> 1.0.2)
|
79
|
-
nokogiri (>= 1.5.9)
|
80
|
-
mail (2.7.1)
|
81
|
-
mini_mime (>= 0.1.1)
|
82
|
-
marcel (1.0.1)
|
83
|
-
method_source (1.0.0)
|
84
|
-
mini_mime (1.1.0)
|
85
|
-
mini_portile2 (2.6.1)
|
86
|
-
minitest (5.14.4)
|
87
|
-
nio4r (2.5.8)
|
88
|
-
nokogiri (1.12.3)
|
89
|
-
mini_portile2 (~> 2.6.1)
|
90
|
-
racc (~> 1.4)
|
91
|
-
pg (1.2.3)
|
92
|
-
racc (1.5.2)
|
93
|
-
rack (2.2.3)
|
94
|
-
rack-test (1.1.0)
|
95
|
-
rack (>= 1.0, < 3)
|
96
|
-
rails (6.1.4.1)
|
97
|
-
actioncable (= 6.1.4.1)
|
98
|
-
actionmailbox (= 6.1.4.1)
|
99
|
-
actionmailer (= 6.1.4.1)
|
100
|
-
actionpack (= 6.1.4.1)
|
101
|
-
actiontext (= 6.1.4.1)
|
102
|
-
actionview (= 6.1.4.1)
|
103
|
-
activejob (= 6.1.4.1)
|
104
|
-
activemodel (= 6.1.4.1)
|
105
|
-
activerecord (= 6.1.4.1)
|
106
|
-
activestorage (= 6.1.4.1)
|
107
|
-
activesupport (= 6.1.4.1)
|
108
|
-
bundler (>= 1.15.0)
|
109
|
-
railties (= 6.1.4.1)
|
110
|
-
sprockets-rails (>= 2.0.0)
|
111
|
-
rails-dom-testing (2.0.3)
|
112
|
-
activesupport (>= 4.2.0)
|
113
|
-
nokogiri (>= 1.6)
|
114
|
-
rails-html-sanitizer (1.4.1)
|
115
|
-
loofah (~> 2.3)
|
116
|
-
railties (6.1.4.1)
|
117
|
-
actionpack (= 6.1.4.1)
|
118
|
-
activesupport (= 6.1.4.1)
|
119
|
-
method_source
|
120
|
-
rake (>= 0.13)
|
121
|
-
thor (~> 1.0)
|
122
|
-
rake (13.0.6)
|
123
|
-
sprockets (4.0.2)
|
124
|
-
concurrent-ruby (~> 1.0)
|
125
|
-
rack (> 1, < 3)
|
126
|
-
sprockets-rails (3.2.2)
|
127
|
-
actionpack (>= 4.0)
|
128
|
-
activesupport (>= 4.0)
|
129
|
-
sprockets (>= 3.0.0)
|
130
|
-
thor (1.1.0)
|
131
|
-
tzinfo (2.0.4)
|
132
|
-
concurrent-ruby (~> 1.0)
|
133
|
-
websocket-driver (0.7.5)
|
134
|
-
websocket-extensions (>= 0.1.0)
|
135
|
-
websocket-extensions (0.1.5)
|
136
|
-
zeitwerk (2.4.2)
|
137
|
-
|
138
|
-
PLATFORMS
|
139
|
-
ruby
|
140
|
-
|
141
|
-
DEPENDENCIES
|
142
|
-
active_record-union_relation!
|
143
|
-
minitest (~> 5.14)
|
144
|
-
pg (~> 1.2)
|
145
|
-
rails (~> 6.1)
|
146
|
-
rake (~> 13.0)
|
147
|
-
|
148
|
-
BUNDLED WITH
|
149
|
-
2.2.3
|
data/Rakefile
DELETED
data/bin/console
DELETED