awesome_nested_set 3.0.3 → 3.1.4
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 +17 -1
- data/README.md +7 -9
- data/lib/awesome_nested_set.rb +6 -3
- data/lib/awesome_nested_set/awesome_nested_set.rb +15 -11
- data/lib/awesome_nested_set/columns.rb +4 -0
- data/lib/awesome_nested_set/model.rb +20 -6
- data/lib/awesome_nested_set/model/movable.rb +2 -1
- data/lib/awesome_nested_set/model/prunable.rb +2 -2
- data/lib/awesome_nested_set/model/rebuildable.rb +5 -1
- data/lib/awesome_nested_set/model/transactable.rb +1 -1
- data/lib/awesome_nested_set/model/validatable.rb +14 -3
- data/lib/awesome_nested_set/tree.rb +11 -1
- data/lib/awesome_nested_set/version.rb +1 -1
- metadata +56 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 886dba55e5efcba602756917fdd82ae57c3e6942
|
4
|
+
data.tar.gz: 0f17ad95fef44901498f7b21b2767b0b0e0d0259
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e52c139d7f15f8a9428ec22967c50899e9f31cdcbb301b59cdc322f796b2ce6ad51fa30e28e16cd975c76e73bc48c32e869ba24df06bad0a8e2a6e87b58169f7
|
7
|
+
data.tar.gz: 610280af1b3026696fd3980f7f6bb49d206ad255c770a9be9f0ab3372af455fa62c610cc8de3c68cfb6c8dcbd06431383a8082f8f9449157f668a7c13da8a6a9
|
data/CHANGELOG
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
-
3.
|
1
|
+
3.1.4
|
2
|
+
* Add support for Rails 5.2 [John Hawthorn](https://github.com/jhawthorn) and [marocchino](https://github.com/marocchino)
|
3
|
+
|
4
|
+
3.1.3
|
5
|
+
* Add support for Rails 5.1 [John Hawthorn](https://github.com/jhawthorn)
|
6
|
+
|
7
|
+
3.1.2
|
8
|
+
* Make belongs_to relation optional again [Jan Matusz](https://marahin.pl/)
|
9
|
+
|
10
|
+
3.1.1
|
11
|
+
* Fix a reloading bug when using default scope [Krzysztof Rybka](https://github.com/krzysiek1507)
|
12
|
+
|
13
|
+
3.1.0
|
14
|
+
* Ensure that nested_set queries respect the model's default_scope. [oesgalha](https://github.com/oesgalha)
|
15
|
+
* Add Rails 5 support [Krzysztof Rybka](https://github.com/krzysiek1507)
|
16
|
+
* Drop support for ruby 1.9.3 [Krzysztof Rybka](https://github.com/krzysiek1507)
|
17
|
+
* Fix .all_roots_valid? method when model is ordered by default [Adam Hodowany](https://github.com/hodak)
|
2
18
|
* Reuse the current model's connection when available [Tim Bugai] [#322](https://github.com/collectiveidea/awesome_nested_set/pull/322)
|
3
19
|
|
4
20
|
3.0.3
|
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Awesome Nested Set
|
2
2
|
|
3
|
-
[](https://travis-ci.org/collectiveidea/awesome_nested_set) [](https://codeclimate.com/github/collectiveidea/awesome_nested_set) [](https://gemnasium.com/collectiveidea/awesome_nested_set) [](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 supports Rails 4. Version 2 supports Rails 3. Gem versions prior to 2.0 support Rails 2.
|
9
|
+
Version 3.1 supports Rails 5 & 4. Version 2 supports Rails 3. Gem versions prior to 2.0 support Rails 2.
|
10
10
|
|
11
11
|
## What makes this so awesome?
|
12
12
|
|
@@ -26,6 +26,8 @@ gem 'awesome_nested_set'
|
|
26
26
|
To make use of `awesome_nested_set` your model needs to have 3 fields:
|
27
27
|
`lft`, `rgt`, and `parent_id`. The names of these fields are configurable.
|
28
28
|
You can also have optional fields: `depth` and `children_count`. These fields are configurable.
|
29
|
+
Note that the `children_count` column must have `null: false` and `default: 0` to
|
30
|
+
function properly.
|
29
31
|
|
30
32
|
```ruby
|
31
33
|
class CreateCategories < ActiveRecord::Migration
|
@@ -66,7 +68,7 @@ You can pass various options to `acts_as_nested_set` macro. Configuration option
|
|
66
68
|
* `left_column`: column name for left boundary data (default: lft)
|
67
69
|
* `right_column`: column name for right boundary data (default: rgt)
|
68
70
|
* `depth_column`: column name for the depth data default (default: depth)
|
69
|
-
* `scope`: restricts what is to be considered a list. Given a symbol, it'll attach
|
71
|
+
* `scope`: restricts what is to be considered a list. Given a symbol, it'll attach `_id` (if it hasn't been already) and use that as the foreign key restriction. You can also pass an array to scope by multiple attributes. Example: `acts_as_nested_set :scope => [:notable_id, :notable_type]`
|
70
72
|
* `dependent`: behavior for cascading destroy. If set to :destroy, all the child objects are destroyed alongside this object by calling their destroy method. If set to :delete_all (default), all the child objects are deleted without calling their destroy method. If set to :nullify, all child objects will become orphaned and become roots themselves.
|
71
73
|
* `counter_cache`: adds a counter cache for the number of children. defaults to false. Example: `acts_as_nested_set :counter_cache => :children_count`
|
72
74
|
* `order_column`: on which column to do sorting, by default it is the left_column_name. Example: `acts_as_nested_set :order_column => :position`
|
@@ -133,7 +135,7 @@ class Category < ActiveRecord::Base
|
|
133
135
|
end
|
134
136
|
```
|
135
137
|
|
136
|
-
## Protecting attributes from mass assignment
|
138
|
+
## Protecting attributes from mass assignment (for Rails < 4)
|
137
139
|
|
138
140
|
It's generally best to "whitelist" the attributes that can be used in mass assignment:
|
139
141
|
|
@@ -229,12 +231,8 @@ Example usage:
|
|
229
231
|
|
230
232
|
See [CollectiveIdea::Acts::NestedSet::Helper](lib/awesome_nested_set/helper.rb) for more information about the helpers.
|
231
233
|
|
232
|
-
## References
|
233
|
-
|
234
|
-
You can learn more about nested sets at: http://threebit.net/tutorials/nestedset/tutorial1.html
|
235
|
-
|
236
234
|
## How to contribute
|
237
235
|
|
238
236
|
Please see the ['Contributing' document](CONTRIBUTING.md).
|
239
237
|
|
240
|
-
Copyright © 2008
|
238
|
+
Copyright © 2008–2015 [Collective Idea](http://collectiveidea.com), released under the MIT license.
|
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
|
@@ -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
|
#
|
@@ -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(
|
90
|
+
has_many :children, -> { order(order_column => :asc) },
|
91
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
|
+
:polymorphic => acts_as_nested_set_options[:polymorphic],
|
102
|
+
:touch => acts_as_nested_set_options[:touch]
|
103
|
+
}
|
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
|
@@ -31,6 +31,10 @@ module CollectiveIdea #:nodoc:
|
|
31
31
|
Array(acts_as_nested_set_options[:scope])
|
32
32
|
end
|
33
33
|
|
34
|
+
def counter_cache_column_name
|
35
|
+
acts_as_nested_set_options[:counter_cache]
|
36
|
+
end
|
37
|
+
|
34
38
|
def quoted_left_column_name
|
35
39
|
model_connection.quote_column_name(left_column_name)
|
36
40
|
end
|
@@ -79,7 +79,7 @@ module CollectiveIdea #:nodoc:
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def nested_set_scope(options = {})
|
82
|
-
options = {:order =>
|
82
|
+
options = {:order => { order_column => :asc }}.merge(options)
|
83
83
|
|
84
84
|
where(options[:conditions]).order(options.delete(:order))
|
85
85
|
end
|
@@ -145,7 +145,7 @@ module CollectiveIdea #:nodoc:
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
-
self.class.base_class.
|
148
|
+
self.class.base_class.nested_set_scope options
|
149
149
|
end
|
150
150
|
|
151
151
|
# Separate an other `nested_set_scope` for unscoped model
|
@@ -154,7 +154,7 @@ module CollectiveIdea #:nodoc:
|
|
154
154
|
# And class level `nested_set_scope` seems just for query `root` `child` .. etc
|
155
155
|
# I think we don't have to provide unscoped `nested_set_scope` in class level.
|
156
156
|
def nested_set_scope_without_default_scope(*args)
|
157
|
-
self.class.unscoped do
|
157
|
+
self.class.base_class.unscoped do
|
158
158
|
nested_set_scope(*args)
|
159
159
|
end
|
160
160
|
end
|
@@ -182,8 +182,8 @@ module CollectiveIdea #:nodoc:
|
|
182
182
|
end
|
183
183
|
|
184
184
|
def right_most_node
|
185
|
-
@right_most_node ||=
|
186
|
-
:order =>
|
185
|
+
@right_most_node ||= nested_set_scope_without_default_scope(
|
186
|
+
:order => {right_column_name => :desc}
|
187
187
|
).first
|
188
188
|
end
|
189
189
|
|
@@ -232,6 +232,20 @@ module CollectiveIdea #:nodoc:
|
|
232
232
|
end
|
233
233
|
end
|
234
234
|
|
235
|
+
def update_counter_cache
|
236
|
+
return unless acts_as_nested_set_options[:counter_cache]
|
237
|
+
|
238
|
+
# Decrease the counter for all old parents
|
239
|
+
if old_parent = self.parent
|
240
|
+
self.class.decrement_counter(acts_as_nested_set_options[:counter_cache], old_parent)
|
241
|
+
end
|
242
|
+
|
243
|
+
# Increase the counter for all new parents
|
244
|
+
if new_parent = self.reload.parent
|
245
|
+
self.class.increment_counter(acts_as_nested_set_options[:counter_cache], new_parent)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
235
249
|
def set_default_left_and_right
|
236
250
|
# adds the new node to the right of all existing nodes
|
237
251
|
self[left_column_name] = right_most_bound + 1
|
@@ -250,7 +264,7 @@ module CollectiveIdea #:nodoc:
|
|
250
264
|
if target.is_a? self.class.base_class
|
251
265
|
target.reload
|
252
266
|
elsif position != :root
|
253
|
-
|
267
|
+
nested_set_scope_without_default_scope.where(primary_column_name => target).first!
|
254
268
|
end
|
255
269
|
end
|
256
270
|
end
|
@@ -46,7 +46,7 @@ module CollectiveIdea #:nodoc:
|
|
46
46
|
elsif node.children.count == index
|
47
47
|
move_to_right_of(node.children.last)
|
48
48
|
else
|
49
|
-
my_position = node.children.index(self)
|
49
|
+
my_position = node.children.to_a.index(self)
|
50
50
|
if my_position && my_position < index
|
51
51
|
# e.g. if self is at position 0 and we want to move self to position 1 then self
|
52
52
|
# needs to move to the *right* of the node at position 1. That's because the node
|
@@ -105,6 +105,7 @@ module CollectiveIdea #:nodoc:
|
|
105
105
|
self.reload_nested_set
|
106
106
|
|
107
107
|
Move.new(target, position, self).move
|
108
|
+
update_counter_cache
|
108
109
|
end
|
109
110
|
after_move_to(target, position)
|
110
111
|
end
|
@@ -47,12 +47,12 @@ module CollectiveIdea #:nodoc:
|
|
47
47
|
elsif acts_as_nested_set_options[:dependent] == :restrict_with_error
|
48
48
|
unless leaf?
|
49
49
|
record = self.class.human_attribute_name(:children).downcase
|
50
|
-
errors.add(:base, :"restrict_dependent_destroy
|
50
|
+
errors.add(:base, :"restrict_dependent_destroy.#{Rails::VERSION::MAJOR < 5 ? 'many' : 'has_many'}", record: record)
|
51
51
|
return false
|
52
52
|
end
|
53
53
|
return true
|
54
54
|
elsif acts_as_nested_set_options[:dependent] == :nullify
|
55
|
-
descendants.update_all(
|
55
|
+
descendants.update_all(parent_column_name => nil)
|
56
56
|
else
|
57
57
|
descendants.delete_all
|
58
58
|
end
|
@@ -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
|
|
@@ -17,7 +17,7 @@ module CollectiveIdea #:nodoc:
|
|
17
17
|
rescue CollectiveIdea::Acts::NestedSet::Move::ImpossibleMove
|
18
18
|
raise
|
19
19
|
rescue ActiveRecord::StatementInvalid => error
|
20
|
-
raise OpenTransactionsIsNotZero.new(error.message) unless connection.open_transactions.zero?
|
20
|
+
raise OpenTransactionsIsNotZero.new(error.message) unless self.class.connection.open_transactions.zero?
|
21
21
|
raise unless error.message =~ /[Dd]eadlock|Lock wait timeout exceeded/
|
22
22
|
raise DeadlockDetected.new(error.message) unless retry_count < 10
|
23
23
|
retry_count += 1
|
@@ -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
|
@@ -41,8 +41,10 @@ module CollectiveIdea
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def each_root_valid?(roots_to_validate)
|
44
|
+
left_column = acts_as_nested_set_options[:left_column]
|
45
|
+
reordered_roots = roots_reordered_by_column(roots_to_validate, left_column)
|
44
46
|
left = right = 0
|
45
|
-
|
47
|
+
reordered_roots.all? do |root|
|
46
48
|
(root.left > left && root.right > right).tap do
|
47
49
|
left = root.left
|
48
50
|
right = root.right
|
@@ -57,12 +59,21 @@ module CollectiveIdea
|
|
57
59
|
}
|
58
60
|
end
|
59
61
|
|
62
|
+
def roots_reordered_by_column(roots_to_reorder, column)
|
63
|
+
if roots_to_reorder.respond_to?(:reorder) # ActiveRecord's relation
|
64
|
+
roots_to_reorder.reorder(column)
|
65
|
+
elsif roots_to_reorder.respond_to?(:sort) # Array
|
66
|
+
roots_to_reorder.sort { |a, b| a.send(column) <=> b.send(column) }
|
67
|
+
else
|
68
|
+
roots_to_reorder
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
60
72
|
def scope_string
|
61
73
|
Array(acts_as_nested_set_options[:scope]).map do |c|
|
62
74
|
connection.quote_column_name(c)
|
63
75
|
end.push(nil).join(", ")
|
64
76
|
end
|
65
|
-
|
66
77
|
end
|
67
78
|
end
|
68
79
|
end
|
@@ -6,7 +6,7 @@ module CollectiveIdea #:nodoc:
|
|
6
6
|
attr_accessor :indices
|
7
7
|
|
8
8
|
delegate :left_column_name, :right_column_name, :quoted_parent_column_full_name,
|
9
|
-
:order_for_rebuild, :scope_for_rebuild,
|
9
|
+
:order_for_rebuild, :scope_for_rebuild, :counter_cache_column_name,
|
10
10
|
:to => :model
|
11
11
|
|
12
12
|
def initialize(model, validate_nodes)
|
@@ -23,6 +23,7 @@ module CollectiveIdea #:nodoc:
|
|
23
23
|
# setup index for this scope
|
24
24
|
indices[scope_for_rebuild.call(root_node)] ||= 0
|
25
25
|
set_left_and_rights(root_node)
|
26
|
+
reset_counter_cache(root_node)
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
@@ -57,6 +58,15 @@ module CollectiveIdea #:nodoc:
|
|
57
58
|
def set_right!(node)
|
58
59
|
node[right_column_name] = increment_indice!(node)
|
59
60
|
end
|
61
|
+
|
62
|
+
def reset_counter_cache(node)
|
63
|
+
return unless counter_cache_column_name
|
64
|
+
node.class.reset_counters(node.id, :children)
|
65
|
+
|
66
|
+
node.children.each do |child|
|
67
|
+
reset_counter_cache(child)
|
68
|
+
end
|
69
|
+
end
|
60
70
|
end
|
61
71
|
end
|
62
72
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-02-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 4.0.0
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '5'
|
24
|
+
version: '5.3'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,21 +31,63 @@ dependencies:
|
|
31
31
|
version: 4.0.0
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '5'
|
34
|
+
version: '5.3'
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: appraisal
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
type: :development
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: pry
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: pry-nav
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
35
77
|
- !ruby/object:Gem::Dependency
|
36
78
|
name: rspec-rails
|
37
79
|
requirement: !ruby/object:Gem::Requirement
|
38
80
|
requirements:
|
39
81
|
- - "~>"
|
40
82
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
83
|
+
version: 3.5.0
|
42
84
|
type: :development
|
43
85
|
prerelease: false
|
44
86
|
version_requirements: !ruby/object:Gem::Requirement
|
45
87
|
requirements:
|
46
88
|
- - "~>"
|
47
89
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
90
|
+
version: 3.5.0
|
49
91
|
- !ruby/object:Gem::Dependency
|
50
92
|
name: rake
|
51
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,6 +109,9 @@ dependencies:
|
|
67
109
|
- - ">="
|
68
110
|
- !ruby/object:Gem::Version
|
69
111
|
version: 0.5.2
|
112
|
+
- - "<"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 0.5.5
|
70
115
|
type: :development
|
71
116
|
prerelease: false
|
72
117
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,6 +119,9 @@ dependencies:
|
|
74
119
|
- - ">="
|
75
120
|
- !ruby/object:Gem::Version
|
76
121
|
version: 0.5.2
|
122
|
+
- - "<"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.5.5
|
77
125
|
- !ruby/object:Gem::Dependency
|
78
126
|
name: database_cleaner
|
79
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
178
|
requirements:
|
131
179
|
- - ">="
|
132
180
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
181
|
+
version: 2.0.0
|
134
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
183
|
requirements:
|
136
184
|
- - ">="
|
@@ -138,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
186
|
version: '0'
|
139
187
|
requirements: []
|
140
188
|
rubyforge_project:
|
141
|
-
rubygems_version: 2.
|
189
|
+
rubygems_version: 2.6.13
|
142
190
|
signing_key:
|
143
191
|
specification_version: 4
|
144
192
|
summary: An awesome nested set implementation for Active Record
|