closure_tree 4.2.6 → 4.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 668d9c504e247dafadea2b0ccbc1765514b3d0c1
4
- data.tar.gz: 65aab985c3409f2a77c05853b63426366650ded9
5
- SHA512:
6
- metadata.gz: 60550b7c9c0810ab5fc66e4d4f2fbbefa1a5bcde87db897b59292d08b11f6859789a35c89394b405c3ba6e6ea9b0edf1cafaf0de57c0d89ca4b3439d9d3401ef
7
- data.tar.gz: 41d130014eca0daeb0848a8613604304f9c2f6887ebce70cfd77b2769686ff1b6cdf4c683d23120959b7c310db3b4918c96b92e007d98996d01fdce5e607333a
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YWUwYTFjNDQ4ZDI3ZDhkZTc0MWU1ZmY4MDZkZmMxZDdjZjY3MmFjMw==
5
+ data.tar.gz: !binary |-
6
+ YzdmYTU0ZDNkODUyOGNkNTMyZDE4YTQ4ZTg3MzY4ZTRhMzhjZTllZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZDMxNjQxNjYxZGYyNDMxNjM5MDhmZGQ0MzMyYTI4ZDU3ZWUwZmIwYjk1NTBj
10
+ ZTQ0N2YwYTIwMWYzNGQ2MDAwYTQ1MjBiM2MyMmNjZTY3ZTNiNTJkNWI1NWE2
11
+ NzQ4MDMxODYzMGQ1YTkxN2VkNTE3YjU2NTI0ZDQ0ODZkOGNlODE=
12
+ data.tar.gz: !binary |-
13
+ MzBjNmRmYmVlYWUzZjEyYjBlNjViNDEwYWVmOWU0ZTBmZGQwMWI2YTIzNGE4
14
+ OWE3ZTcxNTBiMzk0OWYzZjliMzcxNzg0M2YxZWJiNzQ4OTYwYTFhN2ZjMjU3
15
+ M2M1ZmUzOWVmMmFhMzgyZmIzNmVlNjgyNjExMjUyMzBkNDhkYmM=
@@ -17,9 +17,10 @@ module ClosureTree
17
17
 
18
18
  def _ct_validate
19
19
  if !@_ct_skip_cycle_detection &&
20
- changes[_ct.parent_column_name] &&
21
- parent.present? &&
22
- parent.self_and_ancestors.include?(self)
20
+ !new_record? && # don't validate for cycles if we're a new record
21
+ changes[_ct.parent_column_name] && # don't validate for cycles if we didn't change our parent
22
+ parent.present? && # don't validate if we're root
23
+ parent.self_and_ancestors.include?(self) # < this is expensive :\
23
24
  errors.add(_ct.parent_column_sym, "You cannot add an ancestor as a descendant")
24
25
  end
25
26
  end
@@ -30,7 +31,15 @@ module ClosureTree
30
31
  end
31
32
 
32
33
  def _ct_after_save
33
- rebuild! if changes[_ct.parent_column_name] || @was_new_record
34
+ if changes[_ct.parent_column_name] || @was_new_record
35
+ rebuild!
36
+ end
37
+ if changes[_ct.parent_column_name] && !@was_new_record
38
+ # Resetting the ancestral collections addresses
39
+ # https://github.com/mceachen/closure_tree/issues/68
40
+ ancestor_hierarchies.reload
41
+ self_and_ancestors.reload
42
+ end
34
43
  @was_new_record = false # we aren't new anymore.
35
44
  true # don't cancel anything.
36
45
  end
@@ -1,3 +1,3 @@
1
1
  module ClosureTree
2
- VERSION = Gem::Version.new("4.2.6") unless defined?(::ClosureTree::VERSION)
2
+ VERSION = Gem::Version.new("4.2.7") unless defined?(::ClosureTree::VERSION)
3
3
  end
@@ -27,4 +27,12 @@ describe CuisineType do
27
27
  it "sets the table_name of the hierarchy class properly" do
28
28
  CuisineTypeHierarchy.table_name.should == ActiveRecord::Base.table_name_prefix + "cuisine_type_hierarchies" + ActiveRecord::Base.table_name_suffix
29
29
  end
30
+
31
+ it 'fixes self_and_ancestors properly on reparenting' do
32
+ a = CuisineType.create! :name => 'a'
33
+ b = CuisineType.create! :name => 'b'
34
+ b.self_and_ancestors.to_a.should == [b]
35
+ a.children << b
36
+ b.self_and_ancestors.to_a.should == [b, a]
37
+ end
30
38
  end
data/spec/spec_helper.rb CHANGED
@@ -32,7 +32,7 @@ ActiveRecord::Base.configurations = YAML::load(ERB.new(IO.read(plugin_test_dir +
32
32
  ActiveRecord::Base.establish_connection(ENV["DB"])
33
33
  ActiveRecord::Migration.verbose = false
34
34
  if ENV['NONUKES']
35
- puts "skipping database creation"
35
+ puts 'skipping database creation'
36
36
  else
37
37
  require 'db/schema'
38
38
  end
data/spec/tag_examples.rb CHANGED
@@ -97,6 +97,13 @@ shared_examples_for "Tag (without fixtures)" do
97
97
  tag_class.leaves.should be_empty
98
98
  DestroyedTag.all.map { |t| t.name }.should =~ %w{root mid leaf}
99
99
  end
100
+
101
+ it 'fix self_and_ancestors properly on reparenting' do
102
+ t = tag_class.create! :name => 'moar leaf'
103
+ t.self_and_ancestors.to_a.should == [t]
104
+ @mid.children << t
105
+ t.self_and_ancestors.to_a.should == [t, @mid, @root]
106
+ end
100
107
  end
101
108
 
102
109
  context "3 tag explicit_create db" do
metadata CHANGED
@@ -1,167 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: closure_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.6
4
+ version: 4.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew McEachen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-14 00:00:00.000000000 Z
11
+ date: 2013-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: with_advisory_lock
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.0.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.0.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
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
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
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
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
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
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-instafail
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: fuubar
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '>='
101
+ - - ! '>='
88
102
  - !ruby/object:Gem::Version
89
103
  version: '0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '>='
108
+ - - ! '>='
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec-rails
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - '>='
115
+ - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - '>='
122
+ - - ! '>='
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: mysql2
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - '>='
129
+ - - ! '>='
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - '>='
136
+ - - ! '>='
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: pg
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '>='
143
+ - - ! '>='
130
144
  - !ruby/object:Gem::Version
131
145
  version: '0'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '>='
150
+ - - ! '>='
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: sqlite3
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - '>='
157
+ - - ! '>='
144
158
  - !ruby/object:Gem::Version
145
159
  version: '0'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '>='
164
+ - - ! '>='
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: uuidtools
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '>='
171
+ - - ! '>='
158
172
  - !ruby/object:Gem::Version
159
173
  version: '0'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '>='
178
+ - - ! '>='
165
179
  - !ruby/object:Gem::Version
166
180
  version: '0'
167
181
  description: Easily and efficiently make your ActiveRecord model support hierarchies
@@ -213,17 +227,17 @@ require_paths:
213
227
  - lib
214
228
  required_ruby_version: !ruby/object:Gem::Requirement
215
229
  requirements:
216
- - - '>='
230
+ - - ! '>='
217
231
  - !ruby/object:Gem::Version
218
232
  version: '0'
219
233
  required_rubygems_version: !ruby/object:Gem::Requirement
220
234
  requirements:
221
- - - '>='
235
+ - - ! '>='
222
236
  - !ruby/object:Gem::Version
223
237
  version: '0'
224
238
  requirements: []
225
239
  rubyforge_project:
226
- rubygems_version: 2.0.2
240
+ rubygems_version: 2.0.3
227
241
  signing_key:
228
242
  specification_version: 4
229
243
  summary: Easily and efficiently make your ActiveRecord model support hierarchies