ordered_tree 0.2.1 → 1.0.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.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +7 -12
- data/Gemfile.lock +44 -42
- data/Rakefile +6 -48
- data/lib/ordered_tree.rb +12 -6
- data/lib/ordered_tree/instance_methods/list.rb +7 -6
- data/lib/ordered_tree/version.rb +3 -0
- data/ordered_tree.gemspec +13 -72
- data/spec/ordered_tree_spec.rb +4 -3
- data/spec/spec_helper.rb +20 -47
- data/spec/support/database.rb +28 -0
- data/spec/support/fixtures.rb +1 -0
- metadata +47 -89
- data/.rvmrc +0 -1
- data/CHANGELOG +0 -14
- data/VERSION +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 89b0b8e8c240c4d40cebf0a7a700de104779728f
|
4
|
+
data.tar.gz: 431cb5a5e4f49ccd4fc0b82b774f10012e999315
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d9c21dce00ab3c226d3e8207618400bf83329ea39c1093d84569c4471a49bbc5d3bee8e98e106da8b51cadd7b8dbfa4259a5a059064eb5006de060958996071f
|
7
|
+
data.tar.gz: c913b637a4df99b383941060e2c1647ea282c1e5b4a5b09eb13bb8a6b2159a26f2c851bac59374d9b8f218f7297603c4f78a5df8fbd6f3b48d70dfdec09055b9
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0-p353
|
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
@@ -1,15 +1,10 @@
|
|
1
|
-
source "
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
|
-
|
3
|
+
gemspec
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
gem "jeweler", "~> 1.6.2"
|
9
|
-
gem "rcov", ">= 0"
|
5
|
+
gem "activerecord"
|
6
|
+
gem "activesupport"
|
7
|
+
gem "rspec"
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
gem 'libnotify'
|
14
|
-
gem 'rb-inotify'
|
15
|
-
end
|
9
|
+
# TODO Upgrade when fixed: http://stackoverflow.com/a/20128697/61018
|
10
|
+
gem "pry", "0.9.12.2"
|
data/Gemfile.lock
CHANGED
@@ -1,37 +1,40 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ordered_tree (1.0.0)
|
5
|
+
activerecord (>= 4.0)
|
6
|
+
|
1
7
|
GEM
|
2
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
3
9
|
specs:
|
4
|
-
activemodel (
|
5
|
-
activesupport (=
|
6
|
-
builder (~> 3.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
activesupport (=
|
11
|
-
arel (~>
|
12
|
-
|
13
|
-
activesupport (
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
activemodel (4.0.2)
|
11
|
+
activesupport (= 4.0.2)
|
12
|
+
builder (~> 3.1.0)
|
13
|
+
activerecord (4.0.2)
|
14
|
+
activemodel (= 4.0.2)
|
15
|
+
activerecord-deprecated_finders (~> 1.0.2)
|
16
|
+
activesupport (= 4.0.2)
|
17
|
+
arel (~> 4.0.0)
|
18
|
+
activerecord-deprecated_finders (1.0.3)
|
19
|
+
activesupport (4.0.2)
|
20
|
+
i18n (~> 0.6, >= 0.6.4)
|
21
|
+
minitest (~> 4.2)
|
22
|
+
multi_json (~> 1.3)
|
23
|
+
thread_safe (~> 0.1)
|
24
|
+
tzinfo (~> 0.3.37)
|
25
|
+
arel (4.0.1)
|
26
|
+
atomic (1.1.14)
|
27
|
+
builder (3.1.4)
|
28
|
+
coderay (1.0.9)
|
17
29
|
diff-lcs (1.1.3)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
bundler (~> 1.0)
|
27
|
-
git (>= 1.2.5)
|
28
|
-
rake
|
29
|
-
libnotify (0.5.9)
|
30
|
-
multi_json (1.0.3)
|
31
|
-
rake (0.9.2.2)
|
32
|
-
rb-inotify (0.8.8)
|
33
|
-
ffi (>= 0.5.0)
|
34
|
-
rcov (0.9.11)
|
30
|
+
i18n (0.6.9)
|
31
|
+
method_source (0.8.2)
|
32
|
+
minitest (4.7.5)
|
33
|
+
multi_json (1.8.2)
|
34
|
+
pry (0.9.12.2)
|
35
|
+
coderay (~> 1.0.5)
|
36
|
+
method_source (~> 0.8)
|
37
|
+
slop (~> 3.4)
|
35
38
|
rspec (2.6.0)
|
36
39
|
rspec-core (~> 2.6.0)
|
37
40
|
rspec-expectations (~> 2.6.0)
|
@@ -40,20 +43,19 @@ GEM
|
|
40
43
|
rspec-expectations (2.6.0)
|
41
44
|
diff-lcs (~> 1.1.2)
|
42
45
|
rspec-mocks (2.6.0)
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
+
slop (3.4.7)
|
47
|
+
sqlite3 (1.3.8)
|
48
|
+
thread_safe (0.1.3)
|
49
|
+
atomic
|
50
|
+
tzinfo (0.3.38)
|
46
51
|
|
47
52
|
PLATFORMS
|
48
53
|
ruby
|
49
54
|
|
50
55
|
DEPENDENCIES
|
51
|
-
activerecord
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
rb-inotify
|
57
|
-
rcov
|
58
|
-
rspec (~> 2.6.0)
|
56
|
+
activerecord
|
57
|
+
activesupport
|
58
|
+
ordered_tree!
|
59
|
+
pry (= 0.9.12.2)
|
60
|
+
rspec
|
59
61
|
sqlite3
|
data/Rakefile
CHANGED
@@ -1,53 +1,11 @@
|
|
1
|
-
|
1
|
+
require "bundler/gem_tasks"
|
2
2
|
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
|
6
|
-
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
3
|
+
require 'rspec/core'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
6
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
11
7
|
end
|
12
|
-
require 'rake'
|
13
8
|
|
14
|
-
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "ordered_tree"
|
18
|
-
gem.homepage = "http://github.com/ramontayag/ordered_tree"
|
19
|
-
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{Gem version of Wizard's ActsAsTree}
|
21
|
-
gem.description = %Q{Uses parent_id and position to create an ordered tree.}
|
22
|
-
gem.email = "ramon@tayag.net"
|
23
|
-
gem.authors = ["Ramon Tayag"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
27
|
-
|
28
|
-
require 'rake/testtask'
|
29
|
-
Rake::TestTask.new(:test) do |test|
|
30
|
-
test.libs << 'lib' << 'test'
|
31
|
-
test.pattern = 'test/**/test_*.rb'
|
32
|
-
test.verbose = true
|
33
|
-
end
|
34
|
-
|
35
|
-
require 'rcov/rcovtask'
|
36
|
-
Rcov::RcovTask.new do |test|
|
37
|
-
test.libs << 'test'
|
38
|
-
test.pattern = 'test/**/test_*.rb'
|
39
|
-
test.verbose = true
|
40
|
-
test.rcov_opts << '--exclude "gems/*"'
|
41
|
-
end
|
42
|
-
|
43
|
-
task :default => :test
|
44
|
-
|
45
|
-
require 'rake/rdoctask'
|
46
|
-
Rake::RDocTask.new do |rdoc|
|
47
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
9
|
+
task default: :spec do
|
48
10
|
|
49
|
-
rdoc.rdoc_dir = 'rdoc'
|
50
|
-
rdoc.title = "ordered_tree #{version}"
|
51
|
-
rdoc.rdoc_files.include('README*')
|
52
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
11
|
end
|
data/lib/ordered_tree.rb
CHANGED
@@ -27,17 +27,23 @@ module OrderedTree #:nodoc:
|
|
27
27
|
self.ordered_tree_config[:primary_key] ||= :id
|
28
28
|
self.ordered_tree_config.update(options) if options.is_a?(Hash)
|
29
29
|
|
30
|
-
belongs_to
|
30
|
+
belongs_to(
|
31
|
+
:parent_node,
|
32
|
+
lambda { |instance| where(instance.send(:scope_condition)) },
|
31
33
|
:class_name => self.name,
|
32
34
|
:foreign_key => ordered_tree_config[:foreign_key],
|
33
35
|
:primary_key => ordered_tree_config[:primary_key],
|
34
|
-
|
35
|
-
has_many
|
36
|
+
)
|
37
|
+
has_many(
|
38
|
+
:child_nodes,
|
39
|
+
lambda { |instance|
|
40
|
+
where(instance.send(:scope_condition)).
|
41
|
+
order(ordered_tree_config[:order])
|
42
|
+
},
|
36
43
|
:class_name => self.name,
|
37
44
|
:foreign_key => ordered_tree_config[:foreign_key],
|
38
|
-
:primary_key => ordered_tree_config[:primary_key]
|
39
|
-
|
40
|
-
:order => ordered_tree_config[:order]
|
45
|
+
:primary_key => ordered_tree_config[:primary_key]
|
46
|
+
)
|
41
47
|
scope :roots, lambda { |*args|
|
42
48
|
column = "#{self.table_name}.#{self.ordered_tree_config[:foreign_key].to_sym}"
|
43
49
|
scope_condition = args[0]
|
@@ -116,9 +116,10 @@ module OrderedTree
|
|
116
116
|
# moving from lower to higher, increment all in between
|
117
117
|
# #{order_column} >= #{new_position} AND #{order_column} < #{position_in_list}
|
118
118
|
self.class.transaction do
|
119
|
-
self.class.
|
120
|
-
|
121
|
-
|
119
|
+
self.class.#where(order_column => order_column + 1).
|
120
|
+
where(scope).
|
121
|
+
where("#{order_column} BETWEEN #{new_position} AND #{position_in_list - 1}").
|
122
|
+
update_all("#{order_column} = (#{order_column} + 1)")
|
122
123
|
if on_create
|
123
124
|
self[order_column] = new_position
|
124
125
|
else
|
@@ -129,9 +130,9 @@ module OrderedTree
|
|
129
130
|
# moving from higher to lower, decrement all in between
|
130
131
|
# #{order_column} > #{position_in_list} AND #{order_column} <= #{new_position}
|
131
132
|
self.class.transaction do
|
132
|
-
self.class.
|
133
|
-
|
134
|
-
|
133
|
+
self.class.where(scope).
|
134
|
+
where("#{order_column} BETWEEN #{position_in_list + 1} AND #{new_position}").
|
135
|
+
update_all("#{order_column} = (#{order_column} - 1)")
|
135
136
|
update_attribute(order_column, new_position)
|
136
137
|
end
|
137
138
|
end
|
data/ordered_tree.gemspec
CHANGED
@@ -1,85 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
$: << File.join(File.dirname(__FILE__), "lib")
|
2
|
+
require "ordered_tree/version"
|
5
3
|
|
6
4
|
Gem::Specification.new do |s|
|
7
5
|
s.name = %q{ordered_tree}
|
8
|
-
s.version =
|
6
|
+
s.version = OrderedTree::VERSION
|
9
7
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
8
|
s.authors = ["Ramon Tayag"]
|
12
9
|
s.date = %q{2011-11-13}
|
13
10
|
s.description = %q{Uses parent_id and position to create an ordered tree.}
|
14
|
-
s.email = %q{ramon@tayag.net}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE.txt",
|
17
|
-
"README.textile"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".rvmrc",
|
21
|
-
"CHANGELOG",
|
22
|
-
"Gemfile",
|
23
|
-
"Gemfile.lock",
|
24
|
-
"Guardfile",
|
25
|
-
"LICENSE.txt",
|
26
|
-
"README.textile",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"lib/ordered_tree.rb",
|
30
|
-
"lib/ordered_tree/class_methods.rb",
|
31
|
-
"lib/ordered_tree/instance_methods.rb",
|
32
|
-
"lib/ordered_tree/instance_methods/destroy.rb",
|
33
|
-
"lib/ordered_tree/instance_methods/list.rb",
|
34
|
-
"lib/ordered_tree/instance_methods/misc.rb",
|
35
|
-
"lib/ordered_tree/instance_methods/tree.rb",
|
36
|
-
"ordered_tree.gemspec",
|
37
|
-
"spec/fixtures/category.rb",
|
38
|
-
"spec/fixtures/page.rb",
|
39
|
-
"spec/fixtures/person.rb",
|
40
|
-
"spec/ordered_tree_spec.rb",
|
41
|
-
"spec/spec_helper.rb"
|
42
|
-
]
|
43
11
|
s.homepage = %q{http://github.com/ramontayag/ordered_tree}
|
44
12
|
s.licenses = ["MIT"]
|
45
|
-
s.require_paths = ["lib"]
|
46
|
-
s.rubygems_version = %q{1.6.2}
|
47
13
|
s.summary = %q{Gem version of Wizard's ActsAsTree}
|
48
14
|
|
49
|
-
|
50
|
-
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.email = %q{ramon@tayag.net}
|
51
21
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
57
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
58
|
-
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
59
|
-
s.add_development_dependency(%q<guard-rspec>, [">= 0"])
|
60
|
-
s.add_development_dependency(%q<libnotify>, [">= 0"])
|
61
|
-
s.add_development_dependency(%q<rb-inotify>, [">= 0"])
|
62
|
-
else
|
63
|
-
s.add_dependency(%q<activerecord>, [">= 3.1.1"])
|
64
|
-
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
65
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
66
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
67
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
68
|
-
s.add_dependency(%q<sqlite3>, [">= 0"])
|
69
|
-
s.add_dependency(%q<guard-rspec>, [">= 0"])
|
70
|
-
s.add_dependency(%q<libnotify>, [">= 0"])
|
71
|
-
s.add_dependency(%q<rb-inotify>, [">= 0"])
|
72
|
-
end
|
73
|
-
else
|
74
|
-
s.add_dependency(%q<activerecord>, [">= 3.1.1"])
|
75
|
-
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
76
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
77
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
78
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
79
|
-
s.add_dependency(%q<sqlite3>, [">= 0"])
|
80
|
-
s.add_dependency(%q<guard-rspec>, [">= 0"])
|
81
|
-
s.add_dependency(%q<libnotify>, [">= 0"])
|
82
|
-
s.add_dependency(%q<rb-inotify>, [">= 0"])
|
83
|
-
end
|
22
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 4.0"])
|
23
|
+
s.add_development_dependency(%q<activesupport>, [">= 4.0"])
|
24
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
25
|
+
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
84
26
|
end
|
85
|
-
|
data/spec/ordered_tree_spec.rb
CHANGED
@@ -190,6 +190,7 @@ describe OrderedTree do
|
|
190
190
|
end
|
191
191
|
|
192
192
|
it "should reorder the list when stuff are destroyed" do
|
193
|
+
people_count = @people.count
|
193
194
|
@people[0].descendants.should == [@people[1],@people[2],@people[3],@people[4],@people[7],@people[8],@people[9],@people[10],@people[5],@people[6]]
|
194
195
|
@people[5].self_and_siblings.should == [@people[1],@people[2],@people[5],@people[6]]
|
195
196
|
@people[5].position_in_list.should == 3
|
@@ -197,7 +198,7 @@ describe OrderedTree do
|
|
197
198
|
@people[10].children << @people[2]
|
198
199
|
@people[2].parent.should == @people[10]
|
199
200
|
@people[2].destroy.should_not be_nil
|
200
|
-
Person.count.should ==
|
201
|
+
Person.count.should == people_count - 7
|
201
202
|
# Note that I don't need to reload self_and_siblings or children in this case,
|
202
203
|
# since the re-ordering action is actually happening against people[0].children
|
203
204
|
# (which is what self_and_syblings returns)
|
@@ -254,9 +255,9 @@ describe OrderedTree do
|
|
254
255
|
|
255
256
|
describe "#move_to_bottom" do
|
256
257
|
it "should do properly set the position_in_list" do
|
257
|
-
@people = Person.
|
258
|
+
@people = Person.all
|
258
259
|
(@people[4].move_to_bottom).should_not be_false
|
259
|
-
@people = Person.
|
260
|
+
@people = Person.all
|
260
261
|
@people[3].position_in_list.should == 1
|
261
262
|
@people[9].position_in_list.should == 2
|
262
263
|
@people[10].position_in_list.should == 3
|
data/spec/spec_helper.rb
CHANGED
@@ -1,48 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'rspec'
|
6
|
-
require 'ordered_tree'
|
7
|
-
require 'fixtures/person'
|
8
|
-
require 'fixtures/page'
|
9
|
-
require 'fixtures/category'
|
1
|
+
LIB_DIR = File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
SPEC_DIR = File.dirname(__FILE__)
|
3
|
+
$LOAD_PATH.unshift(LIB_DIR)
|
4
|
+
$LOAD_PATH.unshift(SPEC_DIR)
|
10
5
|
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
# require "bundler/setup"
|
7
|
+
# Bundler.require(:default, :development, :test)
|
8
|
+
require "active_support"
|
9
|
+
require "active_record"
|
10
|
+
require "sqlite3"
|
11
|
+
require "rspec"
|
12
|
+
require "pry"
|
16
13
|
|
17
|
-
|
18
|
-
# in ./support/ and its subdirectories.
|
19
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
14
|
+
require 'ordered_tree'
|
20
15
|
|
21
|
-
|
22
|
-
end
|
16
|
+
Dir["#{SPEC_DIR}/support/**/*.rb"].each {|f| require f}
|
23
17
|
|
24
|
-
|
25
|
-
%W(people pages categories).each do |table_name|
|
26
|
-
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS '#{table_name}'")
|
27
|
-
end
|
28
|
-
ActiveRecord::Base.connection.create_table(:people) do |t|
|
29
|
-
t.integer :parent_id, :null => false, :default => 0
|
30
|
-
t.integer :position
|
31
|
-
t.string :name
|
32
|
-
#add_index :people, [:parent_id], :name => "index_people_on_parent_id"
|
33
|
-
end
|
34
|
-
ActiveRecord::Base.connection.create_table(:pages) do |t|
|
35
|
-
t.integer :parent_id
|
36
|
-
t.integer :position
|
37
|
-
t.string :name
|
38
|
-
t.integer :person_id
|
39
|
-
end
|
40
|
-
ActiveRecord::Base.connection.create_table(:categories) do |t|
|
41
|
-
t.integer :parent_id
|
42
|
-
t.integer :position
|
43
|
-
t.integer :alt_id
|
44
|
-
t.integer :person_id
|
45
|
-
end
|
18
|
+
RSpec.configure do |config|
|
46
19
|
end
|
47
20
|
|
48
21
|
# Using this doesn't seem to work when >= Rails 3.1
|
@@ -52,7 +25,7 @@ end
|
|
52
25
|
# to have different configurations, so we don't have to open
|
53
26
|
# things up in the spec.
|
54
27
|
def ordered_tree(klass, *opts)
|
55
|
-
klass.ordered_tree
|
28
|
+
klass.ordered_tree(*opts)
|
56
29
|
yield
|
57
30
|
ensure
|
58
31
|
klass.ordered_tree
|
@@ -124,11 +97,11 @@ def reload_test_tree
|
|
124
97
|
if n == -1
|
125
98
|
i = i.next
|
126
99
|
people << Person.create(:name => "Person_#{i}")
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
end
|
100
|
+
else
|
101
|
+
2.times do
|
102
|
+
i = i.next
|
103
|
+
people << people[n].children.create(:name => "Person_#{i}")
|
132
104
|
end
|
133
105
|
end
|
134
106
|
end
|
107
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
ActiveRecord::Base.establish_connection(
|
2
|
+
adapter: "sqlite3",
|
3
|
+
database: ":memory:"
|
4
|
+
)
|
5
|
+
|
6
|
+
def reset_database
|
7
|
+
%W(people pages categories).each do |table_name|
|
8
|
+
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS '#{table_name}'")
|
9
|
+
end
|
10
|
+
ActiveRecord::Base.connection.create_table(:people) do |t|
|
11
|
+
t.integer :parent_id, null: false, default: 0
|
12
|
+
t.integer :position
|
13
|
+
t.string :name
|
14
|
+
#add_index :people, [:parent_id], name: "index_people_on_parent_id"
|
15
|
+
end
|
16
|
+
ActiveRecord::Base.connection.create_table(:pages) do |t|
|
17
|
+
t.integer :parent_id
|
18
|
+
t.integer :position
|
19
|
+
t.string :name
|
20
|
+
t.integer :person_id
|
21
|
+
end
|
22
|
+
ActiveRecord::Base.connection.create_table(:categories) do |t|
|
23
|
+
t.integer :parent_id
|
24
|
+
t.integer :position
|
25
|
+
t.integer :alt_id
|
26
|
+
t.integer :person_id
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[File.join(SPEC_DIR, "fixtures", "*.rb")].each {|f| require f}
|
metadata
CHANGED
@@ -1,133 +1,86 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ordered_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ramon Tayag
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2011-11-13 00:00:00.000000000
|
13
|
-
default_executable:
|
11
|
+
date: 2011-11-13 00:00:00.000000000 Z
|
14
12
|
dependencies:
|
15
13
|
- !ruby/object:Gem::Dependency
|
16
14
|
name: activerecord
|
17
|
-
requirement:
|
18
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
19
16
|
requirements:
|
20
|
-
- -
|
17
|
+
- - '>='
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
19
|
+
version: '4.0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: rspec
|
28
|
-
requirement: &87897880 !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
|
-
requirements:
|
31
|
-
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 2.6.0
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: *87897880
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: bundler
|
39
|
-
requirement: &87897640 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
23
|
requirements:
|
42
|
-
- -
|
24
|
+
- - '>='
|
43
25
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
45
|
-
type: :development
|
46
|
-
prerelease: false
|
47
|
-
version_requirements: *87897640
|
26
|
+
version: '4.0'
|
48
27
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
50
|
-
requirement:
|
51
|
-
none: false
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
52
30
|
requirements:
|
53
|
-
- -
|
31
|
+
- - '>='
|
54
32
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
33
|
+
version: '4.0'
|
56
34
|
type: :development
|
57
35
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: rcov
|
61
|
-
requirement: &87897160 !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
37
|
requirements:
|
64
|
-
- -
|
38
|
+
- - '>='
|
65
39
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: *87897160
|
40
|
+
version: '4.0'
|
70
41
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
72
|
-
requirement:
|
73
|
-
none: false
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
74
44
|
requirements:
|
75
|
-
- -
|
45
|
+
- - ~>
|
76
46
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
47
|
+
version: 2.6.0
|
78
48
|
type: :development
|
79
49
|
prerelease: false
|
80
|
-
version_requirements:
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: guard-rspec
|
83
|
-
requirement: &87896610 !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
51
|
requirements:
|
86
|
-
- -
|
52
|
+
- - ~>
|
87
53
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
89
|
-
type: :development
|
90
|
-
prerelease: false
|
91
|
-
version_requirements: *87896610
|
54
|
+
version: 2.6.0
|
92
55
|
- !ruby/object:Gem::Dependency
|
93
|
-
name:
|
94
|
-
requirement:
|
95
|
-
none: false
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
96
58
|
requirements:
|
97
|
-
- -
|
59
|
+
- - '>='
|
98
60
|
- !ruby/object:Gem::Version
|
99
61
|
version: '0'
|
100
62
|
type: :development
|
101
63
|
prerelease: false
|
102
|
-
version_requirements:
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rb-inotify
|
105
|
-
requirement: &87896010 !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
65
|
requirements:
|
108
|
-
- -
|
66
|
+
- - '>='
|
109
67
|
- !ruby/object:Gem::Version
|
110
68
|
version: '0'
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: *87896010
|
114
69
|
description: Uses parent_id and position to create an ordered tree.
|
115
70
|
email: ramon@tayag.net
|
116
71
|
executables: []
|
117
72
|
extensions: []
|
118
|
-
extra_rdoc_files:
|
119
|
-
- LICENSE.txt
|
120
|
-
- README.textile
|
73
|
+
extra_rdoc_files: []
|
121
74
|
files:
|
122
|
-
- .
|
123
|
-
-
|
75
|
+
- .gitignore
|
76
|
+
- .ruby-version
|
77
|
+
- CHANGELOG.md
|
124
78
|
- Gemfile
|
125
79
|
- Gemfile.lock
|
126
80
|
- Guardfile
|
127
81
|
- LICENSE.txt
|
128
82
|
- README.textile
|
129
83
|
- Rakefile
|
130
|
-
- VERSION
|
131
84
|
- lib/ordered_tree.rb
|
132
85
|
- lib/ordered_tree/class_methods.rb
|
133
86
|
- lib/ordered_tree/instance_methods.rb
|
@@ -135,39 +88,44 @@ files:
|
|
135
88
|
- lib/ordered_tree/instance_methods/list.rb
|
136
89
|
- lib/ordered_tree/instance_methods/misc.rb
|
137
90
|
- lib/ordered_tree/instance_methods/tree.rb
|
91
|
+
- lib/ordered_tree/version.rb
|
138
92
|
- ordered_tree.gemspec
|
139
93
|
- spec/fixtures/category.rb
|
140
94
|
- spec/fixtures/page.rb
|
141
95
|
- spec/fixtures/person.rb
|
142
96
|
- spec/ordered_tree_spec.rb
|
143
97
|
- spec/spec_helper.rb
|
144
|
-
|
98
|
+
- spec/support/database.rb
|
99
|
+
- spec/support/fixtures.rb
|
145
100
|
homepage: http://github.com/ramontayag/ordered_tree
|
146
101
|
licenses:
|
147
102
|
- MIT
|
103
|
+
metadata: {}
|
148
104
|
post_install_message:
|
149
105
|
rdoc_options: []
|
150
106
|
require_paths:
|
151
107
|
- lib
|
152
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
109
|
requirements:
|
155
|
-
- -
|
110
|
+
- - '>='
|
156
111
|
- !ruby/object:Gem::Version
|
157
112
|
version: '0'
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
hash: 539117903
|
161
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
114
|
requirements:
|
164
|
-
- -
|
115
|
+
- - '>='
|
165
116
|
- !ruby/object:Gem::Version
|
166
117
|
version: '0'
|
167
118
|
requirements: []
|
168
119
|
rubyforge_project:
|
169
|
-
rubygems_version: 1.
|
120
|
+
rubygems_version: 2.1.11
|
170
121
|
signing_key:
|
171
|
-
specification_version:
|
122
|
+
specification_version: 4
|
172
123
|
summary: Gem version of Wizard's ActsAsTree
|
173
|
-
test_files:
|
124
|
+
test_files:
|
125
|
+
- spec/fixtures/category.rb
|
126
|
+
- spec/fixtures/page.rb
|
127
|
+
- spec/fixtures/person.rb
|
128
|
+
- spec/ordered_tree_spec.rb
|
129
|
+
- spec/spec_helper.rb
|
130
|
+
- spec/support/database.rb
|
131
|
+
- spec/support/fixtures.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use ruby-1.9.2-p290@ordered_tree
|
data/CHANGELOG
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
|
2
|
-
v.1.2 - Wed May 17 2007
|
3
|
-
- renamed syblings to siblings
|
4
|
-
- renamed self_and_syblings to self_and_siblings
|
5
|
-
- some other minor code changes
|
6
|
-
- updated tests
|
7
|
-
|
8
|
-
Note:
|
9
|
-
I attempted to rewrite the tests using fixtures,
|
10
|
-
but some of the tests were failing.
|
11
|
-
I presume this is due to fixtures not supporting
|
12
|
-
nested transactions. The results of this effort
|
13
|
-
can be found in the fixtures_not_working/ branch.
|
14
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|