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 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