awesome_nested_set 3.1.0 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG +47 -0
- data/README.md +7 -8
- data/lib/awesome_nested_set/awesome_nested_set.rb +18 -14
- data/lib/awesome_nested_set/columns.rb +2 -2
- data/lib/awesome_nested_set/model/prunable.rb +1 -1
- data/lib/awesome_nested_set/model/rebuildable.rb +5 -1
- data/lib/awesome_nested_set/model/validatable.rb +1 -1
- data/lib/awesome_nested_set/model.rb +26 -19
- data/lib/awesome_nested_set/move.rb +17 -3
- data/lib/awesome_nested_set/version.rb +3 -1
- data/lib/awesome_nested_set.rb +6 -3
- data.tar.gz.sig +0 -0
- metadata +97 -24
- metadata.gz.sig +4 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5145938ca7a83f2c7f17b21792d96b43fc7c3e7ad90827af1e54bfc69b67d455
|
4
|
+
data.tar.gz: a7c20bb47b946a37e4946ca73577f292679e85624aeb03f75762be7b1e3bc3d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5af92810fd9120cbc84f7ea9f70b444a9331c4ac532e80b03a7c88a506f63a72e80d84ee0b536dfa8f2691c3351d922d55812149188670d45c3945c91a8a651
|
7
|
+
data.tar.gz: 9abe2f9c68010fe4f8105949afc7ecb9941d0897d89bdc0e994920f7a4dec41b2ee1e372e52bc947cbce8395eedec18546d34ce873ba2e9694a53e4b6ab7ea95
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,12 +1,59 @@
|
|
1
|
+
Unreleased version
|
2
|
+
|
3
|
+
* [Compare to 3.4.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.4.0...master)
|
4
|
+
|
5
|
+
3.4.0
|
6
|
+
* Keep current scope when calling `roots` [Petrik de Heus](https://github.com/p8)
|
7
|
+
* STI record now can update counter cache correctly [Issei Murasawa](http://github.com/issei-m)
|
8
|
+
* [Compare to 3.3.1](https://github.com/collectiveidea/awesome_nested_set/compare/v3.3.1...master)
|
9
|
+
|
10
|
+
3.3.1
|
11
|
+
* Add belongs_to :polymorphic key option only when used [Filippo Liverani](https://github.com/filippoliverani)
|
12
|
+
* [Compare to 3.3.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.3.0...v3.3.1)
|
13
|
+
|
14
|
+
3.3.0
|
15
|
+
* Update for compatibility with Rails 6.1 which no longer inherits scoping
|
16
|
+
(Messages of the form "DEPRECATION WARNING: Class level methods will no longer inherit scoping from ...") [Marc Rohloff](https://github.com/marcrohloff)
|
17
|
+
* Fix ruby 2.7 keyword parameters deprecation warning [Krisdigital](https://github.com/krisdigital)
|
18
|
+
* [Compare to 3.2.1](https://github.com/collectiveidea/awesome_nested_set/compare/v3.2.1...v3.3.0)
|
19
|
+
|
20
|
+
3.2.1
|
21
|
+
* Don't reload in after_save callback. [Petrik de Heus](https://github.com/p8)
|
22
|
+
* Fix deprecation warning "Passing a range to `#in` is deprecated". [Konstantin Mochalov](https://github.com/kolen)
|
23
|
+
* [Compare to 3.2.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.2.0...v3.2.1)
|
24
|
+
|
25
|
+
3.2.0
|
26
|
+
* Add support for Rails 6.0 [Stefan Andersen](https://github.com/stfnndrsn) and [Damian Legawiec](https://github.com/damianlegawiec) and [Jonathan Tapia](https://github.com/jtapia) and [Alex](https://github.com/a-ta-ta)
|
27
|
+
* [Compare to 3.1.4](https://github.com/collectiveidea/awesome_nested_set/compare/v3.1.4...v3.2.0)
|
28
|
+
|
29
|
+
3.1.4
|
30
|
+
* Add support for Rails 5.2 [John Hawthorn](https://github.com/jhawthorn) and [marocchino](https://github.com/marocchino)
|
31
|
+
* [Compare to 3.1.3](https://github.com/collectiveidea/awesome_nested_set/compare/v3.1.3...v3.1.4)
|
32
|
+
|
33
|
+
3.1.3
|
34
|
+
* Add support for Rails 5.1 [John Hawthorn](https://github.com/jhawthorn)
|
35
|
+
* [Compare to 3.1.2](https://github.com/collectiveidea/awesome_nested_set/compare/v3.1.2...v3.1.3)
|
36
|
+
|
37
|
+
3.1.2
|
38
|
+
* Make belongs_to relation optional again [Jan Matusz](https://marahin.pl/)
|
39
|
+
* [Compare to 3.0.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.1.1...v3.1.2)
|
40
|
+
|
41
|
+
3.1.1
|
42
|
+
* Fix a reloading bug when using default scope [Krzysztof Rybka](https://github.com/krzysiek1507)
|
43
|
+
* [Compare to 3.1.0](https://github.com/collectiveidea/awesome_nested_set/compare/v3.1.0...v3.1.1)
|
44
|
+
|
1
45
|
3.1.0
|
2
46
|
* Ensure that nested_set queries respect the model's default_scope. [oesgalha](https://github.com/oesgalha)
|
3
47
|
* Add Rails 5 support [Krzysztof Rybka](https://github.com/krzysiek1507)
|
48
|
+
* Drop support for ruby 1.9.3 [Krzysztof Rybka](https://github.com/krzysiek1507)
|
4
49
|
* Fix .all_roots_valid? method when model is ordered by default [Adam Hodowany](https://github.com/hodak)
|
5
50
|
* Reuse the current model's connection when available [Tim Bugai] [#322](https://github.com/collectiveidea/awesome_nested_set/pull/322)
|
51
|
+
* [Compare to 3.0.3](https://github.com/collectiveidea/awesome_nested_set/compare/v3.0.3...v3.1.0)
|
6
52
|
|
7
53
|
3.0.3
|
8
54
|
* Add :nullify option to :dependent functionality to orphan children rather
|
9
55
|
than destroy them.
|
56
|
+
* [Compare to 3.0.2](https://github.com/collectiveidea/awesome_nested_set/compare/v3.0.2...v3.0.3)
|
10
57
|
|
11
58
|
3.0.2
|
12
59
|
* Fix `dependent: :restrict_with_exception` not allowing a delete to occur. [Brendan Kilfoil]
|
data/README.md
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# Awesome Nested Set
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/collectiveidea/awesome_nested_set.
|
3
|
+
[![Build Status](https://travis-ci.org/collectiveidea/awesome_nested_set.svg?branch=master)](https://travis-ci.org/collectiveidea/awesome_nested_set) [![Code Climate](https://codeclimate.com/github/collectiveidea/awesome_nested_set.svg)](https://codeclimate.com/github/collectiveidea/awesome_nested_set) [![Security](https://hakiri.io/github/collectiveidea/awesome_nested_set/master.svg)](https://hakiri.io/github/collectiveidea/awesome_nested_set/master)
|
4
4
|
|
5
5
|
|
6
6
|
Awesome Nested Set is an implementation of the nested set pattern for ActiveRecord models.
|
7
7
|
It is a replacement for acts_as_nested_set and BetterNestedSet, but more awesome.
|
8
8
|
|
9
|
-
Version 3.1 supports Rails 5 & 4. Version 2 supports Rails 3.
|
9
|
+
Version 3.2 supports Rails 6, 3.1 supports Rails 5 & 4. Version 2 supports Rails 3.
|
10
|
+
Gem versions prior to 2.0 support Rails 2.
|
10
11
|
|
11
12
|
## What makes this so awesome?
|
12
13
|
|
@@ -26,7 +27,7 @@ gem 'awesome_nested_set'
|
|
26
27
|
To make use of `awesome_nested_set` your model needs to have 3 fields:
|
27
28
|
`lft`, `rgt`, and `parent_id`. The names of these fields are configurable.
|
28
29
|
You can also have optional fields: `depth` and `children_count`. These fields are configurable.
|
29
|
-
Note that the `
|
30
|
+
Note that the `children_count` column must have `null: false` and `default: 0` to
|
30
31
|
function properly.
|
31
32
|
|
32
33
|
```ruby
|
@@ -65,6 +66,7 @@ Run `rake rdoc` to generate the API docs and see [CollectiveIdea::Acts::NestedSe
|
|
65
66
|
You can pass various options to `acts_as_nested_set` macro. Configuration options are:
|
66
67
|
|
67
68
|
* `parent_column`: specifies the column name to use for keeping the position integer (default: parent_id)
|
69
|
+
* `primary_column`: specifies the column name to use as the inverse of the parent column (default: id)
|
68
70
|
* `left_column`: column name for left boundary data (default: lft)
|
69
71
|
* `right_column`: column name for right boundary data (default: rgt)
|
70
72
|
* `depth_column`: column name for the depth data default (default: depth)
|
@@ -135,7 +137,7 @@ class Category < ActiveRecord::Base
|
|
135
137
|
end
|
136
138
|
```
|
137
139
|
|
138
|
-
## Protecting attributes from mass assignment
|
140
|
+
## Protecting attributes from mass assignment (for Rails < 4)
|
139
141
|
|
140
142
|
It's generally best to "whitelist" the attributes that can be used in mass assignment:
|
141
143
|
|
@@ -178,6 +180,7 @@ class AddNestedToCategories < ActiveRecord::Migration
|
|
178
180
|
add_column :categories, :children_count, :integer
|
179
181
|
|
180
182
|
# This is necessary to update :lft and :rgt columns
|
183
|
+
Category.reset_column_information
|
181
184
|
Category.rebuild!
|
182
185
|
end
|
183
186
|
|
@@ -231,10 +234,6 @@ Example usage:
|
|
231
234
|
|
232
235
|
See [CollectiveIdea::Acts::NestedSet::Helper](lib/awesome_nested_set/helper.rb) for more information about the helpers.
|
233
236
|
|
234
|
-
## References
|
235
|
-
|
236
|
-
You can learn more about nested sets at: http://threebit.net/tutorials/nestedset/tutorial1.html
|
237
|
-
|
238
237
|
## How to contribute
|
239
238
|
|
240
239
|
Please see the ['Contributing' document](CONTRIBUTING.md).
|
@@ -5,7 +5,7 @@ module CollectiveIdea #:nodoc:
|
|
5
5
|
module Acts #:nodoc:
|
6
6
|
module NestedSet #:nodoc:
|
7
7
|
|
8
|
-
# This
|
8
|
+
# This provides Nested Set functionality. Nested Set is a smart way to implement
|
9
9
|
# an _ordered_ tree, with the added feature that you can select the children and all of their
|
10
10
|
# descendants with a single query. The drawback is that insertion or move need some complex
|
11
11
|
# sql queries. But everything is done here by this module!
|
@@ -15,8 +15,8 @@ module CollectiveIdea #:nodoc:
|
|
15
15
|
#
|
16
16
|
# == API
|
17
17
|
#
|
18
|
-
# Methods names are aligned with acts_as_tree as much as possible to make
|
19
|
-
#
|
18
|
+
# Methods names are aligned with acts_as_tree as much as possible to make transition from one
|
19
|
+
# to another easier.
|
20
20
|
#
|
21
21
|
# item.children.create(:name => "child1")
|
22
22
|
#
|
@@ -25,8 +25,8 @@ module CollectiveIdea #:nodoc:
|
|
25
25
|
#
|
26
26
|
# * +:parent_column+ - specifies the column name to use for keeping the position integer (default: parent_id)
|
27
27
|
# * +:primary_column+ - specifies the column name to use as the inverse of the parent column (default: id)
|
28
|
-
# * +:left_column+ - column name for left
|
29
|
-
# * +:right_column+ - column name for right
|
28
|
+
# * +:left_column+ - column name for left boundary data, default "lft"
|
29
|
+
# * +:right_column+ - column name for right boundary data, default "rgt"
|
30
30
|
# * +:depth_column+ - column name for the depth data, default "depth"
|
31
31
|
# * +:scope+ - restricts what is to be considered a list. Given a symbol, it'll attach "_id"
|
32
32
|
# (if it hasn't been already) and use that as the foreign key restriction. You
|
@@ -87,18 +87,22 @@ module CollectiveIdea #:nodoc:
|
|
87
87
|
) if acts_as_nested_set_options[ar_callback]
|
88
88
|
end
|
89
89
|
|
90
|
-
has_many :children, -> { order(
|
91
|
-
has_many_children_options
|
90
|
+
has_many :children, -> { order(order_column_name => :asc) },
|
91
|
+
**has_many_children_options
|
92
92
|
end
|
93
93
|
|
94
94
|
def acts_as_nested_set_relate_parent!
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
95
|
+
options = {
|
96
|
+
:class_name => self.base_class.to_s,
|
97
|
+
:foreign_key => parent_column_name,
|
98
|
+
:primary_key => primary_column_name,
|
99
|
+
:counter_cache => acts_as_nested_set_options[:counter_cache],
|
100
|
+
:inverse_of => (:children unless acts_as_nested_set_options[:polymorphic]),
|
101
|
+
:touch => acts_as_nested_set_options[:touch]
|
102
|
+
}
|
103
|
+
options[:polymorphic] = true if acts_as_nested_set_options[:polymorphic]
|
104
|
+
options[:optional] = true if ActiveRecord::VERSION::MAJOR >= 5
|
105
|
+
belongs_to :parent, **options
|
102
106
|
end
|
103
107
|
|
104
108
|
def acts_as_nested_set_default_options
|
@@ -23,7 +23,7 @@ module CollectiveIdea #:nodoc:
|
|
23
23
|
acts_as_nested_set_options[:primary_column]
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
26
|
+
def order_column_name
|
27
27
|
acts_as_nested_set_options[:order_column] || left_column_name
|
28
28
|
end
|
29
29
|
|
@@ -60,7 +60,7 @@ module CollectiveIdea #:nodoc:
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def quoted_order_column_name
|
63
|
-
model_connection.quote_column_name(
|
63
|
+
model_connection.quote_column_name(order_column_name)
|
64
64
|
end
|
65
65
|
|
66
66
|
def quoted_primary_key_column_full_name
|
@@ -32,7 +32,11 @@ module CollectiveIdea
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def order_for_rebuild
|
35
|
-
|
35
|
+
{
|
36
|
+
left_column_name => :asc,
|
37
|
+
right_column_name => :asc,
|
38
|
+
primary_key => :asc
|
39
|
+
}
|
36
40
|
end
|
37
41
|
end
|
38
42
|
|
@@ -20,7 +20,7 @@ module CollectiveIdea
|
|
20
20
|
select("#{scope_string}#{column}, COUNT(#{column}) as _count").
|
21
21
|
group("#{scope_string}#{column}", quoted_primary_key_column_full_name).
|
22
22
|
having("COUNT(#{column}) > 1").
|
23
|
-
order(
|
23
|
+
order(primary_column_name => :asc).
|
24
24
|
first.nil?
|
25
25
|
end
|
26
26
|
end
|
@@ -52,7 +52,7 @@ module CollectiveIdea #:nodoc:
|
|
52
52
|
|
53
53
|
# Iterates over tree elements and determines the current level in the tree.
|
54
54
|
# Only accepts default ordering, odering by an other column than lft
|
55
|
-
# does not work. This method is much more
|
55
|
+
# does not work. This method is much more efficient than calling level
|
56
56
|
# because it doesn't require any additional database queries.
|
57
57
|
#
|
58
58
|
# Example:
|
@@ -79,9 +79,8 @@ module CollectiveIdea #:nodoc:
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def nested_set_scope(options = {})
|
82
|
-
|
83
|
-
|
84
|
-
where(options[:conditions]).order(options.delete(:order))
|
82
|
+
order = scope_order_from_options(options)
|
83
|
+
where(options[:conditions]).order(order)
|
85
84
|
end
|
86
85
|
|
87
86
|
def primary_key_scope(id)
|
@@ -95,6 +94,12 @@ module CollectiveIdea #:nodoc:
|
|
95
94
|
def roots
|
96
95
|
nested_set_scope.children_of nil
|
97
96
|
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def scope_order_from_options(options)
|
101
|
+
options.fetch(:order, { order_column_name => :asc })
|
102
|
+
end
|
98
103
|
end # end class methods
|
99
104
|
|
100
105
|
# Any instance method that returns a collection makes use of Rails 2.1's named_scope (which is bundled for Rails 2.0), so it can be treated as a finder.
|
@@ -139,13 +144,9 @@ module CollectiveIdea #:nodoc:
|
|
139
144
|
# performs finds on the base ActiveRecord class, using the :scope
|
140
145
|
# declared in the acts_as_nested_set declaration.
|
141
146
|
def nested_set_scope(options = {})
|
142
|
-
|
143
|
-
options[:conditions] = scopes.inject({}) do |conditions,attr|
|
144
|
-
conditions.merge attr => self[attr]
|
145
|
-
end
|
146
|
-
end
|
147
|
+
add_scope_conditions_to_options(options)
|
147
148
|
|
148
|
-
self.class.base_class.nested_set_scope options
|
149
|
+
self.class.base_class.default_scoped.nested_set_scope options
|
149
150
|
end
|
150
151
|
|
151
152
|
# Separate an other `nested_set_scope` for unscoped model
|
@@ -153,10 +154,10 @@ module CollectiveIdea #:nodoc:
|
|
153
154
|
# Only activerecord callbacks need unscoped model to handle the nested set records
|
154
155
|
# And class level `nested_set_scope` seems just for query `root` `child` .. etc
|
155
156
|
# I think we don't have to provide unscoped `nested_set_scope` in class level.
|
156
|
-
def nested_set_scope_without_default_scope(
|
157
|
-
|
158
|
-
|
159
|
-
|
157
|
+
def nested_set_scope_without_default_scope(options = {})
|
158
|
+
add_scope_conditions_to_options(options)
|
159
|
+
|
160
|
+
self.class.base_class.unscoped.nested_set_scope options
|
160
161
|
end
|
161
162
|
|
162
163
|
def to_text
|
@@ -167,6 +168,13 @@ module CollectiveIdea #:nodoc:
|
|
167
168
|
|
168
169
|
protected
|
169
170
|
|
171
|
+
def add_scope_conditions_to_options(options)
|
172
|
+
scopes = scope_column_names
|
173
|
+
return if scopes.empty?
|
174
|
+
|
175
|
+
options[:conditions] = scopes.map { |attr| [attr, self[attr] ] }.to_h
|
176
|
+
end
|
177
|
+
|
170
178
|
def without_self(scope)
|
171
179
|
return scope if new_record?
|
172
180
|
scope.where(["#{self.class.quoted_table_name}.#{self.class.quoted_primary_column_name} != ?", self.primary_id])
|
@@ -183,7 +191,7 @@ module CollectiveIdea #:nodoc:
|
|
183
191
|
|
184
192
|
def right_most_node
|
185
193
|
@right_most_node ||= nested_set_scope_without_default_scope(
|
186
|
-
:order =>
|
194
|
+
:order => {right_column_name => :desc}
|
187
195
|
).first
|
188
196
|
end
|
189
197
|
|
@@ -200,7 +208,6 @@ module CollectiveIdea #:nodoc:
|
|
200
208
|
return unless has_depth_column?
|
201
209
|
|
202
210
|
in_tenacious_transaction do
|
203
|
-
reload
|
204
211
|
update_depth(level)
|
205
212
|
end
|
206
213
|
end
|
@@ -237,12 +244,12 @@ module CollectiveIdea #:nodoc:
|
|
237
244
|
|
238
245
|
# Decrease the counter for all old parents
|
239
246
|
if old_parent = self.parent
|
240
|
-
|
247
|
+
old_parent.class.decrement_counter(acts_as_nested_set_options[:counter_cache], old_parent)
|
241
248
|
end
|
242
249
|
|
243
250
|
# Increase the counter for all new parents
|
244
251
|
if new_parent = self.reload.parent
|
245
|
-
|
252
|
+
new_parent.class.increment_counter(acts_as_nested_set_options[:counter_cache], new_parent)
|
246
253
|
end
|
247
254
|
end
|
248
255
|
|
@@ -264,7 +271,7 @@ module CollectiveIdea #:nodoc:
|
|
264
271
|
if target.is_a? self.class.base_class
|
265
272
|
target.reload
|
266
273
|
elsif position != :root
|
267
|
-
|
274
|
+
nested_set_scope_without_default_scope.where(primary_column_name => target).first!
|
268
275
|
end
|
269
276
|
end
|
270
277
|
end
|
@@ -41,9 +41,21 @@ module CollectiveIdea #:nodoc:
|
|
41
41
|
delegate :base_class, :to => :instance_class, :prefix => :instance
|
42
42
|
|
43
43
|
def where_statement(left_bound, right_bound)
|
44
|
-
instance_arel_table[left_column_name].
|
44
|
+
instance_arel_table[left_column_name].between(left_bound..right_bound).
|
45
|
+
or(instance_arel_table[right_column_name].between(left_bound..right_bound))
|
46
|
+
end
|
47
|
+
|
48
|
+
# Before Arel 6, there was 'in' method, which was replaced
|
49
|
+
# with 'between' in Arel 6 and now gives deprecation warnings
|
50
|
+
# in verbose mode. This is patch to support rails 4.0 (Arel 4)
|
51
|
+
# and 4.1 (Arel 5).
|
52
|
+
module LegacyWhereStatementExt
|
53
|
+
def where_statement(left_bound, right_bound)
|
54
|
+
instance_arel_table[left_column_name].in(left_bound..right_bound).
|
45
55
|
or(instance_arel_table[right_column_name].in(left_bound..right_bound))
|
56
|
+
end
|
46
57
|
end
|
58
|
+
prepend LegacyWhereStatementExt unless Arel::Predications.method_defined?(:between)
|
47
59
|
|
48
60
|
def conditions(a, b, c, d)
|
49
61
|
_conditions = case_condition_for_direction(:quoted_left_column_name) +
|
@@ -84,8 +96,10 @@ module CollectiveIdea #:nodoc:
|
|
84
96
|
|
85
97
|
def lock_nodes_between!(left_bound, right_bound)
|
86
98
|
# select the rows in the model between a and d, and apply a lock
|
87
|
-
instance_base_class.
|
88
|
-
|
99
|
+
instance_base_class.default_scoped.nested_set_scope.
|
100
|
+
right_of(left_bound).left_of_right_side(right_bound).
|
101
|
+
select(primary_column_name).
|
102
|
+
lock(true)
|
89
103
|
end
|
90
104
|
|
91
105
|
def root
|
data/lib/awesome_nested_set.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
require 'active_support/lazy_load_hooks'
|
1
2
|
require 'awesome_nested_set/awesome_nested_set'
|
2
|
-
require 'active_record'
|
3
|
-
ActiveRecord::Base.send :extend, CollectiveIdea::Acts::NestedSet
|
4
3
|
|
5
|
-
|
4
|
+
ActiveSupport.on_load(:active_record) do
|
5
|
+
ActiveRecord::Base.send :extend, CollectiveIdea::Acts::NestedSet
|
6
|
+
end
|
7
|
+
|
8
|
+
ActiveSupport.on_load(:action_view) do
|
6
9
|
require 'awesome_nested_set/helper'
|
7
10
|
ActionView::Base.send :include, CollectiveIdea::Acts::NestedSet::Helper
|
8
11
|
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,16 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awesome_nested_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
8
8
|
- Daniel Morrison
|
9
9
|
- Philip Arndt
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
|
-
cert_chain:
|
13
|
-
|
12
|
+
cert_chain:
|
13
|
+
- |
|
14
|
+
-----BEGIN CERTIFICATE-----
|
15
|
+
MIIEMjCCApqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhnZW1z
|
16
|
+
L0RDPXAvREM9YXJuZHQvREM9aW8wHhcNMjAwNTEwMjIxOTQ2WhcNMjEwNTEwMjIx
|
17
|
+
OTQ2WjAjMSEwHwYDVQQDDBhnZW1zL0RDPXAvREM9YXJuZHQvREM9aW8wggGiMA0G
|
18
|
+
CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDT+JzHYPGMYJt9ct2DCsbIymn1uJJp
|
19
|
+
HnDkQESfsGe40jTC90oF2iVbVOkaacNc1N3CSWUZvZjuygUuS86P6/kpBILGdO2+
|
20
|
+
bkXXKtfGC2YGGx9TdNLpCb4925vQHvdFeKXGpQDZdDw1SNC6zraZou47CvOE1cl2
|
21
|
+
Bp+1QMZuGRZ4+5CzOEWDWurjqce3O1jUEbyBB7z5H0h/YEaxfXipxhL1Dhi0sgkH
|
22
|
+
qP/e6SxzifdifdZCksJFQ06a1ji9hJY6eM23qbv/aaluVHAZSVBAQBS7rYniLo+N
|
23
|
+
G4vpFhoubQO5u8UluUtCaPUpI/qOvVcSaZn3ZkzlMwC8b1RwAeXBQmtFE2wnrv2i
|
24
|
+
ovTwoN7rHchwhgaHbkuFh4Wr92wGbrWL7J+X8rWKk1f8RF4kvtNE/NA6YrkxTpVh
|
25
|
+
QMyDmekt7rTxvcq2NneLGroWIUVCx/JID+Jw492LKQ6Sl1/P2TRzdEDtqZAZL0gt
|
26
|
+
xlWeMUfGG2D/gLnhs5qnaFaWQwGTmBnTgHcCAwEAAaNxMG8wCQYDVR0TBAIwADAL
|
27
|
+
BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEqtAyQVxPgKsrgoTQ1YmaIu/fmvMBoGA1Ud
|
28
|
+
EQQTMBGBD2dlbXNAcC5hcm5kdC5pbzAaBgNVHRIEEzARgQ9nZW1zQHAuYXJuZHQu
|
29
|
+
aW8wDQYJKoZIhvcNAQELBQADggGBALu2HM50B8xqlAXkCwavJDvWWtV9pG1igFUg
|
30
|
+
friZRWprUQ5nTaNmAd8p8qbJQwaIK2gt+DfYWfB9LtKnQTfbhLRBbmJ7zYw8LjKY
|
31
|
+
PwCs4RWjDAiuyCO3ppfsz+1bsMUXPLgWlaUkXsUy3nr2NruEFTO9zu3wGYQQ93Tt
|
32
|
+
vYSHOnP35UB4QjsjNrOO7FBaQfy6O909PP+GnVcJ62s9c26voJz63RSolwY7Jydw
|
33
|
+
XUlG68jjJKSoDHRzVTmNB7sX8rs8P2kvYkpIUXPHyls3mWBWjBWbdEYWESZrxI2x
|
34
|
+
dS7jY3AnfqhvsWra2pSREb2IDqPnJrHVOejnEI/zuuufUxLwDx3AC6SMdsyWkZ7V
|
35
|
+
9OmLt2rg75Sct6h2220lO5ySqYtqAXuOMBDGv5L0zLalx1g8LACA7uILTKVWh8B8
|
36
|
+
Hsej0MQ3drCB1eA4c9OXdCUQJnY2aLTq3uNvTbZvoTgWK55eq3KLBJ4zzoKZ4tBX
|
37
|
+
/HIFI/fEwYlI1Ji3oikUrHkc4rWgaQ==
|
38
|
+
-----END CERTIFICATE-----
|
39
|
+
date: 2021-02-22 00:00:00.000000000 Z
|
14
40
|
dependencies:
|
15
41
|
- !ruby/object:Gem::Dependency
|
16
42
|
name: activerecord
|
@@ -21,7 +47,7 @@ dependencies:
|
|
21
47
|
version: 4.0.0
|
22
48
|
- - "<"
|
23
49
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
50
|
+
version: '7.0'
|
25
51
|
type: :runtime
|
26
52
|
prerelease: false
|
27
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,51 +57,57 @@ dependencies:
|
|
31
57
|
version: 4.0.0
|
32
58
|
- - "<"
|
33
59
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
60
|
+
version: '7.0'
|
35
61
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
62
|
+
name: appraisal
|
37
63
|
requirement: !ruby/object:Gem::Requirement
|
38
64
|
requirements:
|
39
|
-
- -
|
65
|
+
- - ">="
|
40
66
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
67
|
+
version: '0'
|
42
68
|
type: :development
|
43
69
|
prerelease: false
|
44
70
|
version_requirements: !ruby/object:Gem::Requirement
|
45
71
|
requirements:
|
46
|
-
- -
|
72
|
+
- - ">="
|
47
73
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
74
|
+
version: '0'
|
49
75
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
76
|
+
name: combustion
|
51
77
|
requirement: !ruby/object:Gem::Requirement
|
52
78
|
requirements:
|
53
|
-
- - "
|
79
|
+
- - ">="
|
54
80
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
81
|
+
version: 0.5.2
|
82
|
+
- - "<"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 0.5.5
|
56
85
|
type: :development
|
57
86
|
prerelease: false
|
58
87
|
version_requirements: !ruby/object:Gem::Requirement
|
59
88
|
requirements:
|
60
|
-
- - "
|
89
|
+
- - ">="
|
61
90
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
91
|
+
version: 0.5.2
|
92
|
+
- - "<"
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 0.5.5
|
63
95
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
96
|
+
name: database_cleaner
|
65
97
|
requirement: !ruby/object:Gem::Requirement
|
66
98
|
requirements:
|
67
99
|
- - ">="
|
68
100
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0
|
101
|
+
version: '0'
|
70
102
|
type: :development
|
71
103
|
prerelease: false
|
72
104
|
version_requirements: !ruby/object:Gem::Requirement
|
73
105
|
requirements:
|
74
106
|
- - ">="
|
75
107
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
108
|
+
version: '0'
|
77
109
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
110
|
+
name: pry
|
79
111
|
requirement: !ruby/object:Gem::Requirement
|
80
112
|
requirements:
|
81
113
|
- - ">="
|
@@ -88,6 +120,48 @@ dependencies:
|
|
88
120
|
- - ">="
|
89
121
|
- !ruby/object:Gem::Version
|
90
122
|
version: '0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: pry-nav
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
- !ruby/object:Gem::Dependency
|
138
|
+
name: rake
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - "~>"
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '10'
|
144
|
+
type: :development
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '10'
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: rspec-rails
|
153
|
+
requirement: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - "~>"
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 4.0.0
|
158
|
+
type: :development
|
159
|
+
prerelease: false
|
160
|
+
version_requirements: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - "~>"
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 4.0.0
|
91
165
|
description: An awesome nested set implementation for Active Record
|
92
166
|
email: info@collectiveidea.com
|
93
167
|
executables: []
|
@@ -118,7 +192,7 @@ homepage: http://github.com/collectiveidea/awesome_nested_set
|
|
118
192
|
licenses:
|
119
193
|
- MIT
|
120
194
|
metadata: {}
|
121
|
-
post_install_message:
|
195
|
+
post_install_message:
|
122
196
|
rdoc_options:
|
123
197
|
- "--main"
|
124
198
|
- README.md
|
@@ -137,9 +211,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
211
|
- !ruby/object:Gem::Version
|
138
212
|
version: '0'
|
139
213
|
requirements: []
|
140
|
-
|
141
|
-
|
142
|
-
signing_key:
|
214
|
+
rubygems_version: 3.1.4
|
215
|
+
signing_key:
|
143
216
|
specification_version: 4
|
144
217
|
summary: An awesome nested set implementation for Active Record
|
145
218
|
test_files: []
|
metadata.gz.sig
ADDED