activerecord-setops 0.1.1 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 250e160c4a314f3dbd70006d8c0578f65f2f96bfa7a6184347e117a82c7100c2
4
- data.tar.gz: 9c237499708d5a17742433567eb0ef9440a47038c676def5692fd276c7dc2934
3
+ metadata.gz: ff173ef86e3d6dd6452ef2e1a5c951dfc49b0fc82b17f39e2e295ea43673249f
4
+ data.tar.gz: 50fc5f51616f9f744ca0345404fef5aad491fe177b0e70c6256e803330398714
5
5
  SHA512:
6
- metadata.gz: dec7c60d171dd79b8cc2a3dd27a10a8d5e87ad77ff20a74d61ed342350e1c390431b7f7a4c8f8ad10e5aa50d24dca6a08b6e95289a4f4b41b31a09189854dbd4
7
- data.tar.gz: 07031403f8457b12f01578846fde1f5e7ff6d5efd6cd695b16413cdaf55deaaeae7a64906b201fd547c7ad984ef0cc4f624dd3a8f879377807f7f8ae68011fdc
6
+ metadata.gz: e576137f4f3e14464649548add2031a14cea8992b86330131dfe683de900c4168e39309320b73695827ace4be19bea198513af8719012520fb807d4d78ba6d89
7
+ data.tar.gz: 3053deafd6157aedb983b1d70f8db24e4c6582fd222db9d87f63be7f7d28b6d7202913444ee71794248dfba3c071283ee863e998052fa29c16f9c1a5b372c020
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  spec/spec.db
13
+ tags
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## 0.1.5
4
+
5
+ - Added `lib/activerecord-setops.rb`
6
+
7
+ ## 0.1.6
8
+
9
+ - Removed `except` can still be called as `difference` or `-`.
@@ -1,24 +1,24 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activerecord-setops (0.1.1)
4
+ activerecord-setops (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- activemodel (5.2.4.1)
10
- activesupport (= 5.2.4.1)
11
- activerecord (5.2.4.1)
12
- activemodel (= 5.2.4.1)
13
- activesupport (= 5.2.4.1)
9
+ activemodel (5.2.4.3)
10
+ activesupport (= 5.2.4.3)
11
+ activerecord (5.2.4.3)
12
+ activemodel (= 5.2.4.3)
13
+ activesupport (= 5.2.4.3)
14
14
  arel (>= 9.0)
15
- activesupport (5.2.4.1)
15
+ activesupport (5.2.4.3)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 0.7, < 2)
18
18
  minitest (~> 5.1)
19
19
  tzinfo (~> 1.1)
20
20
  arel (9.0.0)
21
- concurrent-ruby (1.1.5)
21
+ concurrent-ruby (1.1.6)
22
22
  contracts (0.16.0)
23
23
  contracts-gen (0.1.1)
24
24
  contracts (~> 0.16.0)
@@ -32,8 +32,8 @@ GEM
32
32
  regexp-examples (~> 1.5.0)
33
33
  i18n (1.8.2)
34
34
  concurrent-ruby (~> 1.0)
35
- minitest (5.14.0)
36
- rake (10.5.0)
35
+ minitest (5.14.1)
36
+ rake (13.0.1)
37
37
  regexp-examples (1.5.1)
38
38
  rspec (3.9.0)
39
39
  rspec-core (~> 3.9.0)
@@ -50,19 +50,20 @@ GEM
50
50
  rspec-support (3.9.2)
51
51
  sqlite3 (1.4.2)
52
52
  thread_safe (0.3.6)
53
- tzinfo (1.2.6)
53
+ tzinfo (1.2.7)
54
54
  thread_safe (~> 0.1)
55
55
 
56
56
  PLATFORMS
57
57
  ruby
58
58
 
59
59
  DEPENDENCIES
60
- activerecord (~> 5.2.4)
60
+ activerecord (>= 5.2.4.3, < 6)
61
61
  activerecord-setops!
62
+ activesupport (>= 5.2.4.3, < 6)
62
63
  bundler (~> 1.17)
63
64
  contracts-gen (~> 0.1.1)
64
65
  gen-test (~> 0.1.1)
65
- rake (~> 10.0)
66
+ rake (~> 13.0)
66
67
  rspec (~> 3.0)
67
68
  sqlite3 (~> 1.4.2)
68
69
 
data/README.md CHANGED
@@ -1,13 +1,23 @@
1
1
  ![Ruby](https://github.com/delonnewman/activerecord-setops/workflows/Ruby/badge.svg)
2
+ [![Gem Version](https://badge.fury.io/rb/activerecord-setops.svg)](https://badge.fury.io/rb/activerecord-setops)
2
3
 
3
4
  # ActiveRecord::Setops
4
5
 
5
6
  Union, Intersect, and Difference set operations for ActiveRecord (also, SQL's UnionAll).
6
7
  Has only been tested with Rails 5.
7
8
 
9
+ # Synopsis
10
+
11
+ ```ruby
12
+ class Student < ActiveRecord::Base; end
13
+ class Employee < ActiveRecord::Base; end
14
+
15
+ (Student.select(:name, :birth_date) | Employee.select(:name, :birth_date)).where("name like John%")
16
+ ```
17
+
8
18
  # Why?
9
19
 
10
- Joins can be difficult to reason about in Arel (an SQL for that matter). Many joins can be replaced
20
+ Joins can be difficult to reason about in Arel (and SQL for that matter). Many joins can be replaced
11
21
  with set operations which are much simpler beasts, may offer performance gains, and have consistent
12
22
  mathematical properties. But these operations while present in Arel are missing in ActiveRecord. This
13
23
  module attempts to correct this lack.
@@ -28,16 +38,8 @@ Or install it yourself as:
28
38
 
29
39
  $ gem install activerecord-setops
30
40
 
31
- # Synopsis
32
-
33
- ```ruby
34
- class Student < ActiveRecord::Base; end
35
- class Employee < ActiveRecord::Base; end
36
-
37
- (Student.select(:name, :birth_date) | Employee.select(:name, :birth_date)).where("name like John%")
38
- ```
39
-
40
41
  # See Also
41
42
 
42
43
  - [Sequel](http://sequel.jeremyevans.net)
43
44
  - [SQL Set Operations](https://en.wikipedia.org/wiki/Set_operations_(SQL))
45
+ - [active_record_union](https://github.com/brianhempel/active_record_union)
@@ -37,10 +37,11 @@ Gem::Specification.new do |spec|
37
37
  spec.require_paths = ["lib"]
38
38
 
39
39
  spec.add_development_dependency "bundler", "~> 1.17"
40
- spec.add_development_dependency "rake", "~> 10.0"
40
+ spec.add_development_dependency "rake", "~> 13.0"
41
41
  spec.add_development_dependency "rspec", "~> 3.0"
42
42
  spec.add_development_dependency "gen-test", "~> 0.1.1"
43
43
  spec.add_development_dependency "contracts-gen", "~> 0.1.1"
44
- spec.add_development_dependency "activerecord", "~> 5.2.4"
44
+ spec.add_development_dependency "activerecord", [">= 5.2.4.3", "< 6"]
45
+ spec.add_development_dependency "activesupport", [">= 5.2.4.3", "< 6"]
45
46
  spec.add_development_dependency "sqlite3", "~> 1.4.2"
46
47
  end
@@ -19,11 +19,10 @@ module ActiveRecord
19
19
  end
20
20
  alias & intersect
21
21
 
22
- def except(other)
22
+ def difference(other)
23
23
  binary_operation(Arel::Nodes::Except, other)
24
24
  end
25
- alias difference except
26
- alias - except
25
+ alias - difference
27
26
 
28
27
  private
29
28
 
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Setops
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
@@ -0,0 +1 @@
1
+ require_relative 'active_record/setops'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-setops
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delon Newman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-30 00:00:00.000000000 Z
11
+ date: 2020-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.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: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,42 @@ dependencies:
84
84
  name: activerecord
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 5.2.4.3
90
+ - - "<"
88
91
  - !ruby/object:Gem::Version
89
- version: 5.2.4
92
+ version: '6'
90
93
  type: :development
91
94
  prerelease: false
92
95
  version_requirements: !ruby/object:Gem::Requirement
93
96
  requirements:
94
- - - "~>"
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 5.2.4.3
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '6'
103
+ - !ruby/object:Gem::Dependency
104
+ name: activesupport
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 5.2.4.3
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '6'
113
+ type: :development
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 5.2.4.3
120
+ - - "<"
95
121
  - !ruby/object:Gem::Version
96
- version: 5.2.4
122
+ version: '6'
97
123
  - !ruby/object:Gem::Dependency
98
124
  name: sqlite3
99
125
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +144,7 @@ files:
118
144
  - ".github/workflows/ruby.yml"
119
145
  - ".gitignore"
120
146
  - ".rspec"
147
+ - CHANGELOG.md
121
148
  - Gemfile
122
149
  - Gemfile.lock
123
150
  - LICENSE.txt
@@ -126,6 +153,7 @@ files:
126
153
  - activerecord-setops.gemspec
127
154
  - lib/active_record/setops.rb
128
155
  - lib/active_record/setops/version.rb
156
+ - lib/activerecord-setops.rb
129
157
  homepage: https://github.com/delonnewman/activerecord-setops#readme
130
158
  licenses:
131
159
  - MIT
@@ -135,7 +163,7 @@ metadata:
135
163
  source_code_uri: https://github.com/delonnewman/activerecord-setops
136
164
  changelog_uri: https://github.com/delonnewman/activerecord-setops#changelog
137
165
  documentation_uri: https://www.rubydoc.info/gems/activerecord-setops
138
- post_install_message:
166
+ post_install_message:
139
167
  rdoc_options: []
140
168
  require_paths:
141
169
  - lib
@@ -151,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
179
  version: '0'
152
180
  requirements: []
153
181
  rubygems_version: 3.0.6
154
- signing_key:
182
+ signing_key:
155
183
  specification_version: 4
156
184
  summary: Set operations for ActiveRecord
157
185
  test_files: []