closure_tree 7.2.0 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0625b057493bad32e0431a7ac4cdba5abc8ee8ac29d09edab97953a68e670bd
4
- data.tar.gz: b99a0700c15e962034444aa6393a774a20ea8fd996c312af1aadf2ad941d938f
3
+ metadata.gz: 7034c0f3149bb3fabe92f4d03f118e4704b80a5ccbfa371e50f1a0f7f624c534
4
+ data.tar.gz: 9a9faf0245f8252442c3c2e80a73eeccdf1e94d748dcb8a2ace96ebf131984c1
5
5
  SHA512:
6
- metadata.gz: 630b296849c1c26b4129e21d29e502d02fa61daa481b1c518846817208ab92f6c8ff75c708a687f1068a2c4ce84ad60b7d711d58a4e03a2a53a2f2ee6c459a89
7
- data.tar.gz: b40be25daf8524d0a9cd5776163ec5a0be247fdf20e7172e3b2bd64b4002591224de88f145c20dacf087c0ec11dbfbc24ca56ef4ec27415f29977e9f092d2ac3
6
+ metadata.gz: 13ee25bbdd76b240ebc74a2f3b6b5846c09a302f60ec2d48dff0d0d8a825f015a66bed08e1eec2bdfad80d437e139337e9e9bbdbb0831ac3b0a4bd5e0493e7e8
7
+ data.tar.gz: 97f0e9bbde7fb694bf52833cfd9c469b5f22944752b5f33586486c2edd10958ac422dc957a847d3ba63153de85b63e9e84494b0529cb855590a72610726d5c2f
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: CI
3
+
4
+ on:
5
+ - push
6
+ - pull_request
7
+
8
+ jobs:
9
+ rspec:
10
+ runs-on: ubuntu-20.04
11
+
12
+ services:
13
+ postgres:
14
+ image: 'postgres:13'
15
+ ports: ['5432:5432']
16
+ env:
17
+ POSTGRES_PASSWORD: postgres
18
+ POSTGRES_DB: closure_tree
19
+ options: >-
20
+ --health-cmd pg_isready
21
+ --health-interval 10s
22
+ --health-timeout 5s
23
+ --health-retries 5
24
+
25
+ strategy:
26
+ fail-fast: false
27
+ matrix:
28
+ ruby:
29
+ - '3.0'
30
+ - '2.7'
31
+ - '2.6'
32
+ - '2.5'
33
+ rails:
34
+ - activerecord_6.1
35
+ - activerecord_6.0
36
+ - activerecord_5.2
37
+ - activerecord_5.1
38
+ - activerecord_5.0
39
+ - activerecord_4.2
40
+ - activerecord_edge
41
+ adapter:
42
+ - sqlite3
43
+ - mysql2
44
+ - postgresql
45
+ exclude:
46
+ - ruby: '2.7'
47
+ rails: activerecord_4.2
48
+ - ruby: '3.0'
49
+ rails: activerecord_4.2
50
+ - ruby: '3.0'
51
+ rails: activerecord_5.0
52
+ - ruby: '3.0'
53
+ rails: activerecord_5.1
54
+ - ruby: '3.0'
55
+ rails: activerecord_5.2
56
+ - ruby: '2.5'
57
+ rails: activerecord_edge
58
+
59
+ steps:
60
+ - name: Checkout
61
+ uses: actions/checkout@v2
62
+
63
+ - name: Setup Ruby
64
+ uses: ruby/setup-ruby@v1
65
+ with:
66
+ ruby-version: ${{ matrix.ruby }}
67
+
68
+ - name: Set DB Adapter
69
+ env:
70
+ RAILS_VERSION: ${{ matrix.rails }}
71
+ DB_ADAPTER: ${{ matrix.adapter }}
72
+
73
+ # See: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#mysql
74
+ run: |
75
+ if [ "${DB_ADAPTER}" = "mysql2" ]; then
76
+ sudo systemctl start mysql.service
77
+ mysql -u root -proot -e 'create database closure_tree;'
78
+ fi
79
+
80
+ - name: Bundle
81
+ env:
82
+ RAILS_VERSION: ${{ matrix.rails }}
83
+ DB_ADAPTER: ${{ matrix.adapter }}
84
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile
85
+ run: |
86
+ gem install bundler
87
+ bundle config path vendor/bundle
88
+ bundle install --jobs 4 --retry 3
89
+
90
+ - name: RSpec
91
+ env:
92
+ RAILS_VERSION: ${{ matrix.rails }}
93
+ DB_ADAPTER: ${{ matrix.adapter }}
94
+ BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile
95
+ WITH_ADVISORY_LOCK_PREFIX: ${{ github.run_id }}
96
+ run: bin/rake --trace spec:all
data/.gitignore CHANGED
@@ -13,4 +13,5 @@ tmp/
13
13
  *.lock
14
14
  tmp/
15
15
  .ruby-*
16
- *.iml
16
+ *.iml
17
+ coverage/
data/.rspec CHANGED
@@ -1 +1 @@
1
- --format documentation --color --order random
1
+ --color
data/Appraisals CHANGED
@@ -74,6 +74,21 @@ appraise 'activerecord-6.0' do
74
74
  end
75
75
  end
76
76
 
77
+ appraise 'activerecord-6.1' do
78
+ gem 'activerecord', '~> 6.1.0'
79
+ platforms :ruby do
80
+ gem 'mysql2'
81
+ gem 'pg'
82
+ gem 'sqlite3'
83
+ end
84
+
85
+ platforms :jruby do
86
+ gem 'activerecord-jdbcmysql-adapter'
87
+ gem 'activerecord-jdbcpostgresql-adapter'
88
+ gem 'activerecord-jdbcsqlite3-adapter'
89
+ end
90
+ end
91
+
77
92
  appraise 'activerecord-edge' do
78
93
  gem 'activerecord', github: 'rails/rails'
79
94
  platforms :ruby do
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+
4
+ ### 7.3.0
5
+ - Ruby 3.0 support
6
+
3
7
  ### 7.2.0
4
8
  - Ruby 2.7 support
5
9
  - Ordering raw SQL argument wrapped with Arel.sql
data/Rakefile CHANGED
@@ -1,23 +1,20 @@
1
- begin
2
- require 'bundler/setup'
3
- rescue LoadError
4
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
- end
1
+ # frozen_string_literal: true
6
2
 
7
- Bundler::GemHelper.install_tasks
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
8
5
 
9
- require "rspec/core/rake_task"
10
6
  RSpec::Core::RakeTask.new(:spec) do |task|
11
- task.pattern = 'spec/*_spec.rb'
7
+ task.pattern = 'spec/closure_tree/*_spec.rb'
12
8
  end
13
9
 
14
- task :default => :spec
10
+ task default: :spec
15
11
 
16
12
  namespace :spec do
17
13
  desc 'Run all spec variants'
18
14
  task :all do
19
- rake = 'bundle exec rake'
15
+ rake = 'bin/rake'
20
16
  fail unless system("#{rake} spec:generators")
17
+
21
18
  [['', ''], ['db_prefix_', ''], ['', '_db_suffix'], ['abc_', '_123']].each do |prefix, suffix|
22
19
  env = "DB_PREFIX=#{prefix} DB_SUFFIX=#{suffix}"
23
20
  fail unless system("#{rake} spec #{env}")
data/bin/appraisal ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'appraisal' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("appraisal", "appraisal")
data/bin/rake ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rake", "rake")
data/bin/rspec ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rspec-core", "rspec")
data/closure_tree.gemspec CHANGED
@@ -1,5 +1,6 @@
1
- $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
- require 'closure_tree/version'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/closure_tree/version'
3
4
 
4
5
  Gem::Specification.new do |gem|
5
6
  gem.name = 'closure_tree'
@@ -26,8 +27,11 @@ Gem::Specification.new do |gem|
26
27
  gem.add_development_dependency 'database_cleaner'
27
28
  gem.add_development_dependency 'generator_spec'
28
29
  gem.add_development_dependency 'parallel'
30
+ gem.add_development_dependency 'pg'
29
31
  gem.add_development_dependency 'rspec-instafail'
30
32
  gem.add_development_dependency 'rspec-rails'
33
+ gem.add_development_dependency 'sqlite3'
34
+ gem.add_development_dependency 'simplecov'
31
35
  gem.add_development_dependency 'timecop'
32
36
  # gem.add_development_dependency 'byebug'
33
37
  # gem.add_development_dependency 'ruby-prof' # <- don't need this normally.
@@ -8,7 +8,7 @@ module ClosureTree
8
8
  options[:class_name] ||= assoc_name.to_s.sub(/\Aroot_/, "").classify
9
9
  options[:foreign_key] ||= self.name.underscore << "_id"
10
10
 
11
- has_one assoc_name, -> { where(parent: nil) }, options
11
+ has_one assoc_name, -> { where(parent: nil) }, **options
12
12
 
13
13
  # Fetches the association, eager loading all children and given associations
14
14
  define_method("#{assoc_name}_including_tree") do |*args|
@@ -1,3 +1,3 @@
1
1
  module ClosureTree
2
- VERSION = Gem::Version.new('7.2.0')
2
+ VERSION = Gem::Version.new('7.3.0')
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: closure_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-03 00:00:00.000000000 Z
11
+ date: 2021-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pg
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec-instafail
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,34 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: sqlite3
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: timecop
127
169
  requirement: !ruby/object:Gem::Requirement
@@ -143,9 +185,9 @@ executables: []
143
185
  extensions: []
144
186
  extra_rdoc_files: []
145
187
  files:
188
+ - ".github/workflows/ci.yml"
146
189
  - ".gitignore"
147
190
  - ".rspec"
148
- - ".travis.yml"
149
191
  - ".yardopts"
150
192
  - Appraisals
151
193
  - CHANGELOG.md
@@ -154,6 +196,9 @@ files:
154
196
  - README.md
155
197
  - Rakefile
156
198
  - _config.yml
199
+ - bin/appraisal
200
+ - bin/rake
201
+ - bin/rspec
157
202
  - closure_tree.gemspec
158
203
  - lib/closure_tree.rb
159
204
  - lib/closure_tree/active_record_support.rb
@@ -184,7 +229,7 @@ homepage: http://mceachen.github.io/closure_tree/
184
229
  licenses:
185
230
  - MIT
186
231
  metadata: {}
187
- post_install_message:
232
+ post_install_message:
188
233
  rdoc_options: []
189
234
  require_paths:
190
235
  - lib
@@ -200,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
245
  version: '0'
201
246
  requirements: []
202
247
  rubygems_version: 3.0.3
203
- signing_key:
248
+ signing_key:
204
249
  specification_version: 4
205
250
  summary: Easily and efficiently make your ActiveRecord model support hierarchies
206
251
  test_files: []
data/.travis.yml DELETED
@@ -1,36 +0,0 @@
1
- cache: bundler
2
- language: ruby
3
-
4
- rvm:
5
- - 2.7.1
6
- - 2.6.3
7
- - 2.5.5
8
-
9
- gemfile:
10
- - gemfiles/activerecord_6.0.gemfile
11
- - gemfiles/activerecord_5.2.gemfile
12
- - gemfiles/activerecord_5.1.gemfile
13
- - gemfiles/activerecord_5.0.gemfile
14
- - gemfiles/activerecord_4.2.gemfile
15
- - gemfiles/activerecord_edge.gemfile
16
-
17
- env:
18
- - DB=sqlite
19
- - DB=mysql
20
- - DB=postgresql
21
-
22
- services:
23
- - mysql
24
- - postgresql
25
-
26
- script: WITH_ADVISORY_LOCK_PREFIX=$TRAVIS_JOB_ID bundle exec rake --trace spec:all
27
-
28
- matrix:
29
- allow_failures:
30
- - gemfile: gemfiles/activerecord_edge.gemfile
31
- - gemfile: gemfiles/activerecord_6.0.gemfile
32
- exclude:
33
- - rvm: 2.5.5
34
- gemfile: gemfiles/activerecord_edge.gemfile
35
- - rvm: 2.7.1
36
- gemfile: gemfiles/activerecord_4.2.gemfile