collectiveidea-awesome_nested_set 1.1.1 → 1.2.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.
data/.autotest ADDED
@@ -0,0 +1,13 @@
1
+ Autotest.add_hook :initialize do |at|
2
+ at.clear_mappings
3
+
4
+ at.add_mapping %r%^lib/(.*)\.rb$% do |_, m|
5
+ at.files_matching %r%^test/#{m[1]}_test.rb$%
6
+ end
7
+
8
+ at.add_mapping(%r%^test/.*\.rb$%) {|filename, _| filename }
9
+
10
+ at.add_mapping %r%^test/fixtures/(.*)s.yml% do |_, _|
11
+ at.files_matching %r%^test/.*\.rb$%
12
+ end
13
+ end
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ awesome_nested_set.sqlite3.db
2
+ test/debug.log
3
+ rdoc
4
+ coverage
5
+ pkg
data/README.rdoc CHANGED
@@ -4,18 +4,14 @@ Awesome Nested Set is an implementation of the nested set pattern for ActiveReco
4
4
 
5
5
  == What makes this so awesome?
6
6
 
7
- This is a new implementation of nested set based off of BetterNestedSet that fixes some bugs, removes tons of duplication, adds a few useful methods, adds STI support and adds 2 very helpful view helpers for select boxes.
7
+ This is a new implementation of nested set based off of BetterNestedSet that fixes some bugs, removes tons of duplication, adds a few useful methods, and adds STI support.
8
8
 
9
9
  == Installation
10
10
 
11
- If you are on edge rails:
11
+ If you are on Rails 2.1 or later:
12
12
 
13
13
  script/plugin install git://github.com/collectiveidea/awesome_nested_set.git
14
14
 
15
- If you are not on edge rails:
16
-
17
- git clone git://github.com/collectiveidea/awesome_nested_set.git vendor/plugins/awesome_nested_set
18
-
19
15
  == Usage
20
16
 
21
17
  To make use of awesome_nested_set, your model needs to have 3 fields: lft, rgt, and parent_id:
@@ -44,14 +40,14 @@ Enable the nested set functionality by declaring acts_as_nested_set on your mode
44
40
  Run `rake rdoc` to generate the API docs and see CollectiveIdea::Acts::NestedSet::SingletonMethods for more info.
45
41
 
46
42
  == View Helper
47
-
48
- The view helper is called #nested_set_options.
49
-
50
- Example usage:
51
-
52
- <%= f.select :parent_id, nested_set_options(Category, @category) {|i| "#{'' * i.level} #{i.name}" }) %>
53
-
54
- <%= select_tag 'parent_id', options_for_select(nested_set_options(Category) {|i| "#{'' * i.level} #{i.name}" } ) %>
43
+
44
+ The view helper is called #nested_set_options.
45
+
46
+ Example usage:
47
+
48
+ <%= f.select :parent_id, nested_set_options(Category, @category) {|i| "#{'-' * i.level} #{i.name}" } %>
49
+
50
+ <%= select_tag 'parent_id', options_for_select(nested_set_options(Category) {|i| "#{'-' * i.level} #{i.name}" } ) %>
55
51
 
56
52
  See CollectiveIdea::Acts::NestedSet::Helper for more information about the helpers.
57
53
 
data/Rakefile CHANGED
@@ -1,20 +1,28 @@
1
- require 'rake'
1
+ begin
2
+ require 'jeweler'
3
+ rescue LoadError
4
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
5
+ exit 1
6
+ end
2
7
  require 'rake/testtask'
3
8
  require 'rake/rdoctask'
4
- require 'rake/gempackagetask'
5
9
  require 'rcov/rcovtask'
6
10
  require "load_multi_rails_rake_tasks"
7
11
 
8
- spec = eval(File.read("#{File.dirname(__FILE__)}/awesome_nested_set.gemspec"))
9
- PKG_NAME = spec.name
10
- PKG_VERSION = spec.version
11
-
12
- Rake::GemPackageTask.new(spec) do |pkg|
13
- pkg.need_zip = true
14
- pkg.need_tar = true
12
+ Jeweler::Tasks.new do |s|
13
+ s.name = "awesome_nested_set"
14
+ s.summary = "An awesome nested set implementation for Active Record"
15
+ s.description = s.summary
16
+ s.email = "info@collectiveidea.com"
17
+ s.homepage = "http://github.com/collectiveidea/awesome_nested_set"
18
+ s.authors = ["Brandon Keepers", "Daniel Morrison"]
19
+ s.add_dependency "activerecord", ['>= 1.1']
20
+ s.has_rdoc = true
21
+ s.extra_rdoc_files = [ "README.rdoc"]
22
+ s.rdoc_options = ["--main", "README.rdoc", "--inline-source", "--line-numbers"]
23
+ s.test_files = Dir['test/**/*.{yml,rb}']
15
24
  end
16
25
 
17
-
18
26
  desc 'Default: run unit tests.'
19
27
  task :default => :test
20
28
 
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.2.0
@@ -0,0 +1,68 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{awesome_nested_set}
5
+ s.version = "1.2.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Brandon Keepers", "Daniel Morrison"]
9
+ s.date = %q{2009-07-15}
10
+ s.description = %q{An awesome nested set implementation for Active Record}
11
+ s.email = %q{info@collectiveidea.com}
12
+ s.extra_rdoc_files = [
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".autotest",
17
+ ".gitignore",
18
+ "MIT-LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "awesome_nested_set.gemspec",
23
+ "init.rb",
24
+ "lib/awesome_nested_set.rb",
25
+ "lib/awesome_nested_set/compatability.rb",
26
+ "lib/awesome_nested_set/helper.rb",
27
+ "lib/awesome_nested_set/named_scope.rb",
28
+ "rails/init.rb",
29
+ "test/awesome_nested_set/helper_test.rb",
30
+ "test/awesome_nested_set_test.rb",
31
+ "test/db/database.yml",
32
+ "test/db/schema.rb",
33
+ "test/fixtures/categories.yml",
34
+ "test/fixtures/category.rb",
35
+ "test/fixtures/departments.yml",
36
+ "test/fixtures/notes.yml",
37
+ "test/test_helper.rb"
38
+ ]
39
+ s.homepage = %q{http://github.com/collectiveidea/awesome_nested_set}
40
+ s.rdoc_options = ["--main", "README.rdoc", "--inline-source", "--line-numbers"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = %q{1.3.3}
43
+ s.summary = %q{An awesome nested set implementation for Active Record}
44
+ s.test_files = [
45
+ "test/db/database.yml",
46
+ "test/fixtures/categories.yml",
47
+ "test/fixtures/departments.yml",
48
+ "test/fixtures/notes.yml",
49
+ "test/awesome_nested_set/helper_test.rb",
50
+ "test/awesome_nested_set_test.rb",
51
+ "test/db/schema.rb",
52
+ "test/fixtures/category.rb",
53
+ "test/test_helper.rb"
54
+ ]
55
+
56
+ if s.respond_to? :specification_version then
57
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
58
+ s.specification_version = 3
59
+
60
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
61
+ s.add_runtime_dependency(%q<activerecord>, [">= 1.1"])
62
+ else
63
+ s.add_dependency(%q<activerecord>, [">= 1.1"])
64
+ end
65
+ else
66
+ s.add_dependency(%q<activerecord>, [">= 1.1"])
67
+ end
68
+ end
@@ -1,4 +1,4 @@
1
- module CollectiveIdea
1
+ module CollectiveIdea #:nodoc:
2
2
  module Acts #:nodoc:
3
3
  module NestedSet #:nodoc:
4
4
  def self.included(base)
@@ -66,31 +66,37 @@ module CollectiveIdea
66
66
  write_inheritable_attribute :acts_as_nested_set_options, options
67
67
  class_inheritable_reader :acts_as_nested_set_options
68
68
 
69
- include InstanceMethods
70
- include Comparable
71
- include Columns
72
- extend Columns
73
- extend ClassMethods
74
-
75
- # no bulk assignment
76
- attr_protected left_column_name.intern,
77
- right_column_name.intern,
78
- parent_column_name.intern
69
+ unless self.is_a?(ClassMethods)
70
+ include Comparable
71
+ include Columns
72
+ include InstanceMethods
73
+ extend Columns
74
+ extend ClassMethods
75
+
76
+ attr_accessor :skip_before_destroy
77
+
78
+ # no bulk assignment
79
+ attr_protected left_column_name.intern,
80
+ right_column_name.intern,
81
+ parent_column_name.intern
79
82
 
80
- before_create :set_default_left_and_right
81
- before_destroy :prune_from_tree
83
+ before_create :set_default_left_and_right
84
+ before_destroy :destroy_descendants
82
85
 
83
- # no assignment to structure fields
84
- [left_column_name, right_column_name, parent_column_name].each do |column|
85
- module_eval <<-"end_eval", __FILE__, __LINE__
86
- def #{column}=(x)
87
- raise ActiveRecord::ActiveRecordError, "Unauthorized assignment to #{column}: it's an internal field handled by acts_as_nested_set code, use move_to_* methods instead."
88
- end
89
- end_eval
90
- end
86
+ # no assignment to structure fields
87
+ [left_column_name, right_column_name, parent_column_name].each do |column|
88
+ module_eval <<-"end_eval", __FILE__, __LINE__
89
+ def #{column}=(x)
90
+ raise ActiveRecord::ActiveRecordError, "Unauthorized assignment to #{column}: it's an internal field handled by acts_as_nested_set code, use move_to_* methods instead."
91
+ end
92
+ end_eval
93
+ end
91
94
 
92
- named_scope :roots, :conditions => {parent_column_name => nil}, :order => quoted_left_column_name
93
- named_scope :leaves, :conditions => "#{quoted_right_column_name} - #{quoted_left_column_name} = 1", :order => quoted_left_column_name
95
+ named_scope :roots, :conditions => {parent_column_name => nil}, :order => quoted_left_column_name
96
+ named_scope :leaves, :conditions => "#{quoted_right_column_name} - #{quoted_left_column_name} = 1", :order => quoted_left_column_name
97
+
98
+ define_callbacks("before_move", "after_move") if self.respond_to?(:define_callbacks)
99
+ end
94
100
 
95
101
  end
96
102
 
@@ -263,6 +269,14 @@ module CollectiveIdea
263
269
  def <=>(x)
264
270
  left <=> x.left
265
271
  end
272
+
273
+ # Redefine to act like active record
274
+ def ==(comparison_object)
275
+ comparison_object.equal?(self) ||
276
+ (comparison_object.instance_of?(self.class) &&
277
+ comparison_object.id == id &&
278
+ !comparison_object.new_record?)
279
+ end
266
280
 
267
281
  # Returns root
268
282
  def root
@@ -277,7 +291,7 @@ module CollectiveIdea
277
291
  # Returns the array of all parents and self
278
292
  def self_and_ancestors
279
293
  nested_set_scope.scoped :conditions => [
280
- "#{self.class.table_name}.#{quoted_left_column_name} <= ? AND #{self.class.table_name}.#{quoted_right_column_name} >= ?", left, right
294
+ "#{self.class.quoted_table_name}.#{quoted_left_column_name} <= ? AND #{self.class.quoted_table_name}.#{quoted_right_column_name} >= ?", left, right
281
295
  ]
282
296
  end
283
297
 
@@ -298,7 +312,7 @@ module CollectiveIdea
298
312
 
299
313
  # Returns a set of all of its nested children which do not have children
300
314
  def leaves
301
- descendants.scoped :conditions => "#{self.class.table_name}.#{quoted_right_column_name} - #{self.class.table_name}.#{quoted_left_column_name} = 1"
315
+ descendants.scoped :conditions => "#{self.class.quoted_table_name}.#{quoted_right_column_name} - #{self.class.quoted_table_name}.#{quoted_left_column_name} = 1"
302
316
  end
303
317
 
304
318
  # Returns the level of this object in the tree
@@ -310,7 +324,7 @@ module CollectiveIdea
310
324
  # Returns a set of itself and all of its nested children
311
325
  def self_and_descendants
312
326
  nested_set_scope.scoped :conditions => [
313
- "#{self.class.table_name}.#{quoted_left_column_name} >= ? AND #{self.class.table_name}.#{quoted_right_column_name} <= ?", left, right
327
+ "#{self.class.quoted_table_name}.#{quoted_left_column_name} >= ? AND #{self.class.quoted_table_name}.#{quoted_right_column_name} <= ?", left, right
314
328
  ]
315
329
  end
316
330
 
@@ -349,14 +363,13 @@ module CollectiveIdea
349
363
 
350
364
  # Find the first sibling to the left
351
365
  def left_sibling
352
- siblings.find(:first, :conditions => ["#{self.class.table_name}.#{quoted_left_column_name} < ?", left],
353
- :order => "#{self.class.table_name}.#{quoted_left_column_name} DESC")
366
+ siblings.find(:first, :conditions => ["#{self.class.quoted_table_name}.#{quoted_left_column_name} < ?", left],
367
+ :order => "#{self.class.quoted_table_name}.#{quoted_left_column_name} DESC")
354
368
  end
355
369
 
356
370
  # Find the first sibling to the right
357
371
  def right_sibling
358
- siblings.find(:first, :conditions => ["#{self.class.table_name}.#{quoted_left_column_name} > ?", left],
359
- :order => quoted_left_column_name)
372
+ siblings.find(:first, :conditions => ["#{self.class.quoted_table_name}.#{quoted_left_column_name} > ?", left])
360
373
  end
361
374
 
362
375
  # Shorthand method for finding the left sibling and moving to the left of it.
@@ -406,7 +419,7 @@ module CollectiveIdea
406
419
  protected
407
420
 
408
421
  def without_self(scope)
409
- scope.scoped :conditions => ["#{self.class.table_name}.#{self.class.primary_key} != ?", self]
422
+ scope.scoped :conditions => ["#{self.class.quoted_table_name}.#{self.class.primary_key} != ?", self]
410
423
  end
411
424
 
412
425
  # All nested set queries should use this nested_set_scope, which performs finds on
@@ -431,29 +444,38 @@ module CollectiveIdea
431
444
 
432
445
  # Prunes a branch off of the tree, shifting all of the elements on the right
433
446
  # back to the left so the counts still work.
434
- def prune_from_tree
435
- return if right.nil? || left.nil?
436
- diff = right - left + 1
437
-
438
- delete_method = acts_as_nested_set_options[:dependent] == :destroy ?
439
- :destroy_all : :delete_all
440
-
447
+ def destroy_descendants
448
+ return if right.nil? || left.nil? || skip_before_destroy
449
+
441
450
  self.class.base_class.transaction do
442
- nested_set_scope.send(delete_method,
443
- ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?",
444
- left, right]
445
- )
451
+ if acts_as_nested_set_options[:dependent] == :destroy
452
+ descendants.each do |model|
453
+ model.skip_before_destroy = true
454
+ model.destroy
455
+ end
456
+ else
457
+ nested_set_scope.delete_all(
458
+ ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?",
459
+ left, right]
460
+ )
461
+ end
462
+
463
+ # update lefts and rights for remaining nodes
464
+ diff = right - left + 1
446
465
  nested_set_scope.update_all(
447
466
  ["#{quoted_left_column_name} = (#{quoted_left_column_name} - ?)", diff],
448
- ["#{quoted_left_column_name} >= ?", right]
467
+ ["#{quoted_left_column_name} > ?", right]
449
468
  )
450
469
  nested_set_scope.update_all(
451
470
  ["#{quoted_right_column_name} = (#{quoted_right_column_name} - ?)", diff],
452
- ["#{quoted_right_column_name} >= ?", right]
471
+ ["#{quoted_right_column_name} > ?", right]
453
472
  )
473
+
474
+ # Don't allow multiple calls to destroy to corrupt the set
475
+ self.skip_before_destroy = true
454
476
  end
455
477
  end
456
-
478
+
457
479
  # reload left, right, and parent
458
480
  def reload_nested_set
459
481
  reload(:select => "#{quoted_left_column_name}, " +
@@ -462,7 +484,7 @@ module CollectiveIdea
462
484
 
463
485
  def move_to(target, position)
464
486
  raise ActiveRecord::ActiveRecordError, "You cannot move a new node" if self.new_record?
465
-
487
+ return if callback(:before_move) == false
466
488
  transaction do
467
489
  if target.is_a? self.class.base_class
468
490
  target.reload_nested_set
@@ -525,6 +547,7 @@ module CollectiveIdea
525
547
  end
526
548
  target.reload_nested_set if target
527
549
  self.reload_nested_set
550
+ callback(:after_move)
528
551
  end
529
552
 
530
553
  end
@@ -1,5 +1,5 @@
1
1
  # Rails <2.x doesn't define #except
2
- class Hash
2
+ class Hash #:nodoc:
3
3
  # Returns a new hash without the given keys.
4
4
  def except(*keys)
5
5
  clone.except!(*keys)
@@ -22,7 +22,7 @@ unless defined? ActiveRecord::NamedScope
22
22
  end
23
23
 
24
24
  # Rails 1.2.x doesn't define #quoted_table_name
25
- class ActiveRecord::Base
25
+ class ActiveRecord::Base #:nodoc:
26
26
  def self.quoted_table_name
27
27
  self.connection.quote_column_name(self.table_name)
28
28
  end unless methods.include?('quoted_table_name')
@@ -1,9 +1,8 @@
1
- module CollectiveIdea
1
+ module CollectiveIdea #:nodoc:
2
2
  module Acts #:nodoc:
3
3
  module NestedSet #:nodoc:
4
4
  # This module provides some helpers for the model classes using acts_as_nested_set.
5
- # It is included by default in all views. If you need to remove it, edit the last line
6
- # of init.rb.
5
+ # It is included by default in all views.
7
6
  #
8
7
  module Helper
9
8
  # Returns options for select.
@@ -1,6 +1,6 @@
1
1
  # Taken from Rails 2.1
2
- module CollectiveIdea
3
- module NamedScope
2
+ module CollectiveIdea #:nodoc:
3
+ module NamedScope #:nodoc:
4
4
  # All subclasses of ActiveRecord::Base have two named_scopes:
5
5
  # * <tt>all</tt>, which is similar to a <tt>find(:all)</tt> query, and
6
6
  # * <tt>scoped</tt>, which allows for the creation of anonymous scopes, on the fly:
@@ -16,7 +16,7 @@ module CollectiveIdea
16
16
  end
17
17
  end
18
18
 
19
- module ClassMethods
19
+ module ClassMethods #:nodoc:
20
20
  def scopes
21
21
  read_inheritable_attribute(:scopes) || write_inheritable_attribute(:scopes, {})
22
22
  end
@@ -101,7 +101,7 @@ module CollectiveIdea
101
101
  end
102
102
  end
103
103
 
104
- class Scope
104
+ class Scope #:nodoc:
105
105
  attr_reader :proxy_scope, :proxy_options
106
106
  [].methods.each { |m| delegate m, :to => :proxy_found unless m =~ /(^__|^nil\?|^send|class|extend|find|count|sum|average|maximum|minimum|paginate)/ }
107
107
  delegate :scopes, :with_scope, :to => :proxy_scope
@@ -591,4 +591,32 @@ class AwesomeNestedSetTest < Test::Unit::TestCase
591
591
  assert_equal ["\"notable_id\"", "\"notable_type\""], Note.quoted_scope_column_names
592
592
  end
593
593
 
594
+ def test_equal_in_same_scope
595
+ assert_equal notes(:scope1), notes(:scope1)
596
+ assert_not_equal notes(:scope1), notes(:child_1)
597
+ end
598
+
599
+ def test_equal_in_different_scopes
600
+ assert_not_equal notes(:scope1), notes(:scope2)
601
+ end
602
+
603
+ def test_delete_does_not_invalidate
604
+ Category.acts_as_nested_set_options[:dependent] = :delete
605
+ categories(:child_2).destroy
606
+ assert Category.valid?
607
+ end
608
+
609
+ def test_destroy_does_not_invalidate
610
+ Category.acts_as_nested_set_options[:dependent] = :destroy
611
+ categories(:child_2).destroy
612
+ assert Category.valid?
613
+ end
614
+
615
+ def test_destroy_multiple_times_does_not_invalidate
616
+ Category.acts_as_nested_set_options[:dependent] = :destroy
617
+ categories(:child_2).destroy
618
+ categories(:child_2).destroy
619
+ assert Category.valid?
620
+ end
621
+
594
622
  end
@@ -32,7 +32,7 @@ child_3:
32
32
  scope2:
33
33
  id: 5
34
34
  body: Top Level 2
35
- lft: 11
36
- rgt: 12
35
+ lft: 1
36
+ rgt: 2
37
37
  notable_id: 1
38
38
  notable_type: Departments
data/test/test_helper.rb CHANGED
@@ -4,7 +4,6 @@ plugin_test_dir = File.dirname(__FILE__)
4
4
  require 'rubygems'
5
5
  require 'test/unit'
6
6
  require 'multi_rails_init'
7
- # gem 'activerecord', '>= 2.0'
8
7
  require 'active_record'
9
8
  require 'action_controller'
10
9
  require 'action_view'
metadata CHANGED
@@ -1,19 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collectiveidea-awesome_nested_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Collective Idea
7
+ - Brandon Keepers
8
+ - Daniel Morrison
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2008-10-09 00:00:00 -07:00
13
+ date: 2009-07-15 00:00:00 -07:00
13
14
  default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: activerecord
18
+ type: :runtime
17
19
  version_requirement:
18
20
  version_requirements: !ruby/object:Gem::Requirement
19
21
  requirements:
@@ -21,7 +23,7 @@ dependencies:
21
23
  - !ruby/object:Gem::Version
22
24
  version: "1.1"
23
25
  version:
24
- description: An awesome replacement for acts_as_nested_set and better_nested_set.
26
+ description: An awesome nested set implementation for Active Record
25
27
  email: info@collectiveidea.com
26
28
  executables: []
27
29
 
@@ -30,26 +32,30 @@ extensions: []
30
32
  extra_rdoc_files:
31
33
  - README.rdoc
32
34
  files:
33
- - init.rb
35
+ - .autotest
36
+ - .gitignore
34
37
  - MIT-LICENSE
35
- - Rakefile
36
38
  - README.rdoc
39
+ - Rakefile
40
+ - VERSION
41
+ - awesome_nested_set.gemspec
42
+ - init.rb
37
43
  - lib/awesome_nested_set.rb
38
44
  - lib/awesome_nested_set/compatability.rb
39
45
  - lib/awesome_nested_set/helper.rb
40
46
  - lib/awesome_nested_set/named_scope.rb
41
47
  - rails/init.rb
42
- - test/awesome_nested_set_test.rb
43
- - test/test_helper.rb
44
48
  - test/awesome_nested_set/helper_test.rb
49
+ - test/awesome_nested_set_test.rb
45
50
  - test/db/database.yml
46
51
  - test/db/schema.rb
47
52
  - test/fixtures/categories.yml
48
53
  - test/fixtures/category.rb
49
54
  - test/fixtures/departments.yml
50
55
  - test/fixtures/notes.yml
51
- has_rdoc: true
52
- homepage: http://collectiveidea.com
56
+ - test/test_helper.rb
57
+ has_rdoc: false
58
+ homepage: http://github.com/collectiveidea/awesome_nested_set
53
59
  post_install_message:
54
60
  rdoc_options:
55
61
  - --main
@@ -75,15 +81,15 @@ requirements: []
75
81
  rubyforge_project:
76
82
  rubygems_version: 1.2.0
77
83
  signing_key:
78
- specification_version: 2
79
- summary: An awesome replacement for acts_as_nested_set and better_nested_set.
84
+ specification_version: 3
85
+ summary: An awesome nested set implementation for Active Record
80
86
  test_files:
81
- - test/awesome_nested_set_test.rb
82
- - test/test_helper.rb
83
- - test/awesome_nested_set/helper_test.rb
84
87
  - test/db/database.yml
85
- - test/db/schema.rb
86
88
  - test/fixtures/categories.yml
87
- - test/fixtures/category.rb
88
89
  - test/fixtures/departments.yml
89
90
  - test/fixtures/notes.yml
91
+ - test/awesome_nested_set/helper_test.rb
92
+ - test/awesome_nested_set_test.rb
93
+ - test/db/schema.rb
94
+ - test/fixtures/category.rb
95
+ - test/test_helper.rb