chrislloyd-even_better_nested_set 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
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.2"
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
- file_list = FileList['spec/*_spec.rb']
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 = file_list
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 = file_list
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 #{connection.quote_table_name(table_name)}" +
27
- "WHERE #{connection.quote_table_name(primary_key)} = #{id}"
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
- # In the future perhaps this can be extended to allow for custom column names specified
59
- # as options
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
- connection.quote_column_name(name)
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 #{base_class.connection.quote_table_name(base_class.table_name)} " +
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"
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
  require File.dirname(__FILE__) + '/nested_set_behavior'
3
3
 
4
4
  class Directory < ActiveRecord::Base
5
- acts_as_nested_set
5
+ acts_as_nested_set :left => 'left', :right => 'right'
6
6
 
7
7
  validates_presence_of :name
8
8
  end
@@ -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
@@ -3,7 +3,7 @@ $:.push File.join(File.dirname(__FILE__), '..', 'lib')
3
3
 
4
4
  require 'rubygems'
5
5
  require 'active_record'
6
- require 'ruby-debug'
6
+ # require 'ruby-debug' # Slows down the tests massively
7
7
 
8
8
  require 'even_better_nested_set'
9
9
 
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.2"
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-11 00:00:00 -08:00
12
+ date: 2009-02-12 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15