chrislloyd-even_better_nested_set 0.2 → 0.3
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/Rakefile +15 -9
- data/lib/even_better_nested_set.rb +20 -8
- data/spec/directory_spec.rb +1 -1
- data/spec/employee_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +2 -2
data/Rakefile
CHANGED
@@ -5,7 +5,7 @@ require 'date'
|
|
5
5
|
require 'spec/rake/spectask'
|
6
6
|
|
7
7
|
GEM = "even_better_nested_set"
|
8
|
-
GEM_VERSION = "0.
|
8
|
+
GEM_VERSION = "0.3"
|
9
9
|
AUTHOR = "Jonas Nicklas"
|
10
10
|
EMAIL = "jonas.nicklas@gmail.com"
|
11
11
|
HOMEPAGE = "http://github.com/jnicklas/even_better_nested_set/tree/master"
|
@@ -52,21 +52,31 @@ namespace :jruby do
|
|
52
52
|
|
53
53
|
end
|
54
54
|
|
55
|
-
|
55
|
+
spec_files = FileList['spec/*_spec.rb']
|
56
|
+
|
57
|
+
desc 'Default: run unit tests.'
|
58
|
+
task :default => 'spec'
|
59
|
+
|
60
|
+
task :specs => :spec
|
61
|
+
desc "Run all examples"
|
62
|
+
Spec::Rake::SpecTask.new('spec') do |t|
|
63
|
+
t.spec_opts = ['--color']
|
64
|
+
t.spec_files = spec_files
|
65
|
+
end
|
56
66
|
|
57
67
|
namespace :spec do
|
58
68
|
desc "Run all examples with RCov"
|
59
69
|
Spec::Rake::SpecTask.new('rcov') do |t|
|
60
|
-
t.spec_files =
|
70
|
+
t.spec_files = spec_files
|
61
71
|
t.rcov = true
|
62
72
|
t.rcov_dir = "doc/coverage"
|
63
|
-
t.rcov_opts = ['--exclude', 'spec']
|
73
|
+
t.rcov_opts = ['--exclude', 'spec,rspec-*,rcov-*,gems']
|
64
74
|
t.spec_opts = ['--color']
|
65
75
|
end
|
66
76
|
|
67
77
|
desc "Generate an html report"
|
68
78
|
Spec::Rake::SpecTask.new('report') do |t|
|
69
|
-
t.spec_files =
|
79
|
+
t.spec_files = spec_files
|
70
80
|
t.rcov = true
|
71
81
|
t.rcov_dir = "doc/coverage"
|
72
82
|
t.rcov_opts = ['--exclude', 'spec']
|
@@ -75,7 +85,3 @@ namespace :spec do
|
|
75
85
|
end
|
76
86
|
|
77
87
|
end
|
78
|
-
|
79
|
-
|
80
|
-
desc 'Default: run unit tests.'
|
81
|
-
task :default => 'spec:rcov'
|
@@ -23,8 +23,8 @@ module EvenBetterNestedSet
|
|
23
23
|
|
24
24
|
def find_boundaries(id)
|
25
25
|
query = "SELECT #{nested_set_column(:left)}, #{nested_set_column(:right)}" +
|
26
|
-
"FROM #{
|
27
|
-
"WHERE #{
|
26
|
+
"FROM #{quote_db_label(table_name)}" +
|
27
|
+
"WHERE #{quote_db_label(primary_key)} = #{id}"
|
28
28
|
connection.select_rows(query).first
|
29
29
|
end
|
30
30
|
|
@@ -54,11 +54,16 @@ module EvenBetterNestedSet
|
|
54
54
|
end
|
55
55
|
return roots
|
56
56
|
end
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
|
58
|
+
def set_nested_set_columns(left,right)
|
59
|
+
@nested_set_columns = {
|
60
|
+
:left => quote_db_label(left||'lft'),
|
61
|
+
:right => quote_db_label(right||'rgt')
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
60
65
|
def nested_set_column(name)
|
61
|
-
|
66
|
+
@nested_set_columns[name.to_sym]
|
62
67
|
end
|
63
68
|
|
64
69
|
# Recalculates the left and right values for the entire tree
|
@@ -70,7 +75,11 @@ module EvenBetterNestedSet
|
|
70
75
|
end
|
71
76
|
end
|
72
77
|
end
|
73
|
-
|
78
|
+
|
79
|
+
def quote_db_label(name)
|
80
|
+
"`#{name}`".gsub('.','`.`')
|
81
|
+
end
|
82
|
+
|
74
83
|
end
|
75
84
|
|
76
85
|
def root?
|
@@ -123,7 +132,7 @@ module EvenBetterNestedSet
|
|
123
132
|
|
124
133
|
transaction do
|
125
134
|
reload_boundaries
|
126
|
-
query = "SELECT id FROM #{
|
135
|
+
query = "SELECT id FROM #{self.class.quote_db_label(base_class.table_name)} " +
|
127
136
|
"WHERE #{nested_set_column(:left)} >= #{left} AND #{nested_set_column(:right)} <= #{right} " +
|
128
137
|
"ORDER BY #{nested_set_column(:left)}"
|
129
138
|
@family_ids = base_class.connection.select_values(query).map(&:to_i)
|
@@ -286,8 +295,11 @@ module EvenBetterNestedSet
|
|
286
295
|
def acts_as_nested_set(options = {})
|
287
296
|
options[:scope] = "#{options[:scope]}_id" if options[:scope]
|
288
297
|
|
298
|
+
|
289
299
|
include NestedSet
|
290
300
|
|
301
|
+
set_nested_set_columns options[:left], options[:right]
|
302
|
+
|
291
303
|
named_scope :roots, :conditions => { :parent_id => nil }, :order => "#{nested_set_column(:left)} asc"
|
292
304
|
|
293
305
|
has_many :uncached_children, :class_name => self.name, :foreign_key => :parent_id, :order => "#{nested_set_column(:left)} asc"
|
data/spec/directory_spec.rb
CHANGED
data/spec/employee_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
require File.dirname(__FILE__) + '/nested_set_behavior'
|
3
3
|
|
4
4
|
class Employee < ActiveRecord::Base
|
5
|
-
acts_as_nested_set :scope => :company
|
5
|
+
acts_as_nested_set :scope => :company, :left => 'left', :right => 'right'
|
6
6
|
|
7
7
|
validates_presence_of :name
|
8
8
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chrislloyd-even_better_nested_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Nicklas
|
@@ -9,7 +9,7 @@ autorequire: even_better_nested_set
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-12 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|