From 7e6ac8c924c8fde276367904bca41612aa986871 Mon Sep 17 00:00:00 2001 From: benni Date: Sat, 24 Nov 2012 16:41:34 +0100 Subject: [PATCH] Moved acts_as_tree to gemfile. --- Gemfile | 1 + Gemfile.lock | 3 + app/models/page.rb | 4 +- vendor/plugins/acts_as_tree/README | 26 --- vendor/plugins/acts_as_tree/Rakefile | 22 -- vendor/plugins/acts_as_tree/init.rb | 1 - .../lib/active_record/acts/tree.rb | 96 -------- .../acts_as_tree/test/abstract_unit.rb | 0 .../acts_as_tree/test/acts_as_tree_test.rb | 219 ------------------ vendor/plugins/acts_as_tree/test/database.yml | 0 .../acts_as_tree/test/fixtures/mixin.rb | 0 .../acts_as_tree/test/fixtures/mixins.yml | 0 vendor/plugins/acts_as_tree/test/schema.rb | 0 13 files changed, 7 insertions(+), 365 deletions(-) delete mode 100644 vendor/plugins/acts_as_tree/README delete mode 100644 vendor/plugins/acts_as_tree/Rakefile delete mode 100644 vendor/plugins/acts_as_tree/init.rb delete mode 100644 vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb delete mode 100644 vendor/plugins/acts_as_tree/test/abstract_unit.rb delete mode 100644 vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb delete mode 100644 vendor/plugins/acts_as_tree/test/database.yml delete mode 100644 vendor/plugins/acts_as_tree/test/fixtures/mixin.rb delete mode 100644 vendor/plugins/acts_as_tree/test/fixtures/mixins.yml delete mode 100644 vendor/plugins/acts_as_tree/test/schema.rb diff --git a/Gemfile b/Gemfile index 46c882de..6d9fa06f 100644 --- a/Gemfile +++ b/Gemfile @@ -34,6 +34,7 @@ gem 'simple-navigation' gem 'simple-navigation-bootstrap' gem 'meta_search' gem 'acts_as_versioned', git: 'git://github.com/technoweenie/acts_as_versioned.git' # Use this instead of rubygem +gem 'acts_as_tree' group :production do gem 'exception_notification', :require => 'exception_notifier' diff --git a/Gemfile.lock b/Gemfile.lock index b865becc..9f510c64 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,6 +42,8 @@ GEM activesupport (3.2.9) i18n (~> 0.6) multi_json (~> 1.0) + acts_as_tree (1.2.0) + activerecord (>= 3.0.0) arel (3.0.2) builder (3.0.4) client_side_validations (3.1.4) @@ -187,6 +189,7 @@ PLATFORMS ruby DEPENDENCIES + acts_as_tree acts_as_versioned! client_side_validations coffee-rails (~> 3.2.1) diff --git a/app/models/page.rb b/app/models/page.rb index 22df1516..8f79c2de 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -1,9 +1,11 @@ class Page < ActiveRecord::Base - + include ActsAsTree + belongs_to :user, :foreign_key => 'updated_by' acts_as_versioned version_column: :lock_version, limit: 20 self.non_versioned_columns += %w(permalink created_at title) + acts_as_tree :order => "title" attr_accessor :old_title # Save title to create redirect page when editing title diff --git a/vendor/plugins/acts_as_tree/README b/vendor/plugins/acts_as_tree/README deleted file mode 100644 index a6cc6a90..00000000 --- a/vendor/plugins/acts_as_tree/README +++ /dev/null @@ -1,26 +0,0 @@ -acts_as_tree -============ - -Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children -association. This requires that you have a foreign key column, which by default is called +parent_id+. - - class Category < ActiveRecord::Base - acts_as_tree :order => "name" - end - - Example: - root - \_ child1 - \_ subchild1 - \_ subchild2 - - root = Category.create("name" => "root") - child1 = root.children.create("name" => "child1") - subchild1 = child1.children.create("name" => "subchild1") - - root.parent # => nil - child1.parent # => root - root.children # => [child1] - root.children.first.children.first # => subchild1 - -Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license \ No newline at end of file diff --git a/vendor/plugins/acts_as_tree/Rakefile b/vendor/plugins/acts_as_tree/Rakefile deleted file mode 100644 index da091d9d..00000000 --- a/vendor/plugins/acts_as_tree/Rakefile +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' -require 'rake/testtask' -require 'rake/rdoctask' - -desc 'Default: run unit tests.' -task :default => :test - -desc 'Test acts_as_tree plugin.' -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.pattern = 'test/**/*_test.rb' - t.verbose = true -end - -desc 'Generate documentation for acts_as_tree plugin.' -Rake::RDocTask.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'acts_as_tree' - rdoc.options << '--line-numbers' << '--inline-source' - rdoc.rdoc_files.include('README') - rdoc.rdoc_files.include('lib/**/*.rb') -end diff --git a/vendor/plugins/acts_as_tree/init.rb b/vendor/plugins/acts_as_tree/init.rb deleted file mode 100644 index 0901ddb4..00000000 --- a/vendor/plugins/acts_as_tree/init.rb +++ /dev/null @@ -1 +0,0 @@ -ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree diff --git a/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb b/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb deleted file mode 100644 index 1f00e90a..00000000 --- a/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +++ /dev/null @@ -1,96 +0,0 @@ -module ActiveRecord - module Acts - module Tree - def self.included(base) - base.extend(ClassMethods) - end - - # Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children - # association. This requires that you have a foreign key column, which by default is called +parent_id+. - # - # class Category < ActiveRecord::Base - # acts_as_tree :order => "name" - # end - # - # Example: - # root - # \_ child1 - # \_ subchild1 - # \_ subchild2 - # - # root = Category.create("name" => "root") - # child1 = root.children.create("name" => "child1") - # subchild1 = child1.children.create("name" => "subchild1") - # - # root.parent # => nil - # child1.parent # => root - # root.children # => [child1] - # root.children.first.children.first # => subchild1 - # - # In addition to the parent and children associations, the following instance methods are added to the class - # after calling acts_as_tree: - # * siblings - Returns all the children of the parent, excluding the current node ([subchild2] when called on subchild1) - # * self_and_siblings - Returns all the children of the parent, including the current node ([subchild1, subchild2] when called on subchild1) - # * ancestors - Returns all the ancestors of the current node ([child1, root] when called on subchild2) - # * root - Returns the root of the current node (root when called on subchild2) - module ClassMethods - # Configuration options are: - # - # * foreign_key - specifies the column name to use for tracking of the tree (default: +parent_id+) - # * order - makes it possible to sort the children according to this SQL snippet. - # * counter_cache - keeps a count in a +children_count+ column if set to +true+ (default: +false+). - def acts_as_tree(options = {}) - configuration = { :foreign_key => "parent_id", :order => nil, :counter_cache => nil } - configuration.update(options) if options.is_a?(Hash) - - belongs_to :parent, :class_name => name, :foreign_key => configuration[:foreign_key], :counter_cache => configuration[:counter_cache] - has_many :children, :class_name => name, :foreign_key => configuration[:foreign_key], :order => configuration[:order], :dependent => :destroy - - class_eval <<-EOV - include ActiveRecord::Acts::Tree::InstanceMethods - - def self.roots - find(:all, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) - end - - def self.root - find(:first, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) - end - EOV - end - end - - module InstanceMethods - # Returns list of ancestors, starting from parent until root. - # - # subchild1.ancestors # => [child1, root] - def ancestors - node, nodes = self, [] - nodes << node = node.parent while node.parent - nodes - end - - # Returns the root node of the tree. - def root - node = self - node = node.parent while node.parent - node - end - - # Returns all siblings of the current node. - # - # subchild1.siblings # => [subchild2] - def siblings - self_and_siblings - [self] - end - - # Returns all siblings and a reference to the current node. - # - # subchild1.self_and_siblings # => [subchild1, subchild2] - def self_and_siblings - parent ? parent.children : self.class.roots - end - end - end - end -end diff --git a/vendor/plugins/acts_as_tree/test/abstract_unit.rb b/vendor/plugins/acts_as_tree/test/abstract_unit.rb deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb b/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb deleted file mode 100644 index 018c58e1..00000000 --- a/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +++ /dev/null @@ -1,219 +0,0 @@ -require 'test/unit' - -require 'rubygems' -require 'active_record' - -$:.unshift File.dirname(__FILE__) + '/../lib' -require File.dirname(__FILE__) + '/../init' - -class Test::Unit::TestCase - def assert_queries(num = 1) - $query_count = 0 - yield - ensure - assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed." - end - - def assert_no_queries(&block) - assert_queries(0, &block) - end -end - -ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:") - -# AR keeps printing annoying schema statements -$stdout = StringIO.new - -def setup_db - ActiveRecord::Base.logger - ActiveRecord::Schema.define(:version => 1) do - create_table :mixins do |t| - t.column :type, :string - t.column :parent_id, :integer - end - end -end - -def teardown_db - ActiveRecord::Base.connection.tables.each do |table| - ActiveRecord::Base.connection.drop_table(table) - end -end - -class Mixin < ActiveRecord::Base -end - -class TreeMixin < Mixin - acts_as_tree :foreign_key => "parent_id", :order => "id" -end - -class TreeMixinWithoutOrder < Mixin - acts_as_tree :foreign_key => "parent_id" -end - -class RecursivelyCascadedTreeMixin < Mixin - acts_as_tree :foreign_key => "parent_id" - has_one :first_child, :class_name => 'RecursivelyCascadedTreeMixin', :foreign_key => :parent_id -end - -class TreeTest < Test::Unit::TestCase - - def setup - setup_db - @root1 = TreeMixin.create! - @root_child1 = TreeMixin.create! :parent_id => @root1.id - @child1_child = TreeMixin.create! :parent_id => @root_child1.id - @root_child2 = TreeMixin.create! :parent_id => @root1.id - @root2 = TreeMixin.create! - @root3 = TreeMixin.create! - end - - def teardown - teardown_db - end - - def test_children - assert_equal @root1.children, [@root_child1, @root_child2] - assert_equal @root_child1.children, [@child1_child] - assert_equal @child1_child.children, [] - assert_equal @root_child2.children, [] - end - - def test_parent - assert_equal @root_child1.parent, @root1 - assert_equal @root_child1.parent, @root_child2.parent - assert_nil @root1.parent - end - - def test_delete - assert_equal 6, TreeMixin.count - @root1.destroy - assert_equal 2, TreeMixin.count - @root2.destroy - @root3.destroy - assert_equal 0, TreeMixin.count - end - - def test_insert - @extra = @root1.children.create - - assert @extra - - assert_equal @extra.parent, @root1 - - assert_equal 3, @root1.children.size - assert @root1.children.include?(@extra) - assert @root1.children.include?(@root_child1) - assert @root1.children.include?(@root_child2) - end - - def test_ancestors - assert_equal [], @root1.ancestors - assert_equal [@root1], @root_child1.ancestors - assert_equal [@root_child1, @root1], @child1_child.ancestors - assert_equal [@root1], @root_child2.ancestors - assert_equal [], @root2.ancestors - assert_equal [], @root3.ancestors - end - - def test_root - assert_equal @root1, TreeMixin.root - assert_equal @root1, @root1.root - assert_equal @root1, @root_child1.root - assert_equal @root1, @child1_child.root - assert_equal @root1, @root_child2.root - assert_equal @root2, @root2.root - assert_equal @root3, @root3.root - end - - def test_roots - assert_equal [@root1, @root2, @root3], TreeMixin.roots - end - - def test_siblings - assert_equal [@root2, @root3], @root1.siblings - assert_equal [@root_child2], @root_child1.siblings - assert_equal [], @child1_child.siblings - assert_equal [@root_child1], @root_child2.siblings - assert_equal [@root1, @root3], @root2.siblings - assert_equal [@root1, @root2], @root3.siblings - end - - def test_self_and_siblings - assert_equal [@root1, @root2, @root3], @root1.self_and_siblings - assert_equal [@root_child1, @root_child2], @root_child1.self_and_siblings - assert_equal [@child1_child], @child1_child.self_and_siblings - assert_equal [@root_child1, @root_child2], @root_child2.self_and_siblings - assert_equal [@root1, @root2, @root3], @root2.self_and_siblings - assert_equal [@root1, @root2, @root3], @root3.self_and_siblings - end -end - -class TreeTestWithEagerLoading < Test::Unit::TestCase - - def setup - teardown_db - setup_db - @root1 = TreeMixin.create! - @root_child1 = TreeMixin.create! :parent_id => @root1.id - @child1_child = TreeMixin.create! :parent_id => @root_child1.id - @root_child2 = TreeMixin.create! :parent_id => @root1.id - @root2 = TreeMixin.create! - @root3 = TreeMixin.create! - - @rc1 = RecursivelyCascadedTreeMixin.create! - @rc2 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc1.id - @rc3 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc2.id - @rc4 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc3.id - end - - def teardown - teardown_db - end - - def test_eager_association_loading - roots = TreeMixin.find(:all, :include => :children, :conditions => "mixins.parent_id IS NULL", :order => "mixins.id") - assert_equal [@root1, @root2, @root3], roots - assert_no_queries do - assert_equal 2, roots[0].children.size - assert_equal 0, roots[1].children.size - assert_equal 0, roots[2].children.size - end - end - - def test_eager_association_loading_with_recursive_cascading_three_levels_has_many - root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :children => { :children => :children } }, :order => 'mixins.id') - assert_equal @rc4, assert_no_queries { root_node.children.first.children.first.children.first } - end - - def test_eager_association_loading_with_recursive_cascading_three_levels_has_one - root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :first_child => { :first_child => :first_child } }, :order => 'mixins.id') - assert_equal @rc4, assert_no_queries { root_node.first_child.first_child.first_child } - end - - def test_eager_association_loading_with_recursive_cascading_three_levels_belongs_to - leaf_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :parent => { :parent => :parent } }, :order => 'mixins.id DESC') - assert_equal @rc1, assert_no_queries { leaf_node.parent.parent.parent } - end -end - -class TreeTestWithoutOrder < Test::Unit::TestCase - - def setup - setup_db - @root1 = TreeMixinWithoutOrder.create! - @root2 = TreeMixinWithoutOrder.create! - end - - def teardown - teardown_db - end - - def test_root - assert [@root1, @root2].include?(TreeMixinWithoutOrder.root) - end - - def test_roots - assert_equal [], [@root1, @root2] - TreeMixinWithoutOrder.roots - end -end diff --git a/vendor/plugins/acts_as_tree/test/database.yml b/vendor/plugins/acts_as_tree/test/database.yml deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb b/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml b/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/plugins/acts_as_tree/test/schema.rb b/vendor/plugins/acts_as_tree/test/schema.rb deleted file mode 100644 index e69de29b..00000000