Skip to content

Commit

Permalink
Merge branch 'feature/activerecord-4-upgrade' into develop
Browse files Browse the repository at this point in the history
* feature/activerecord-4-upgrade:
  Upgrade to activerecord 4 - Removes deprecation warnings
  Simplified gemspec and dependencies
  Move to .ruby-version - Upgrade to ruby 2.0
  • Loading branch information
ramontayag committed Jan 1, 2014
2 parents aeadc34 + 5017e94 commit f0f117c
Show file tree
Hide file tree
Showing 15 changed files with 145 additions and 190 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -2,3 +2,4 @@
**/*.sw*
test/*.log
pkg
.bundle
1 change: 1 addition & 0 deletions .ruby-version
@@ -0,0 +1 @@
ruby-2.0.0-p353
1 change: 0 additions & 1 deletion .rvmrc

This file was deleted.

4 changes: 4 additions & 0 deletions CHANGELOG.md
@@ -0,0 +1,4 @@
# TBA

- Drop support for ActiveRecord 3.x
- Drop support for Ruby 1.8
19 changes: 7 additions & 12 deletions Gemfile
@@ -1,15 +1,10 @@
source "http://rubygems.org"
source "https://rubygems.org"

gem "activerecord", ">= 3.1.1"
gemspec

group :development do
gem "rspec", "~> 2.6.0"
gem "bundler", "~> 1.0.0"
gem "jeweler", "~> 1.6.2"
gem "rcov", ">= 0"
gem "activerecord"
gem "activesupport"
gem "rspec"

gem 'sqlite3'
gem 'guard-rspec'
gem 'libnotify'
gem 'rb-inotify'
end
# TODO Upgrade when fixed: http://stackoverflow.com/a/20128697/61018
gem "pry", "0.9.12.2"
86 changes: 44 additions & 42 deletions Gemfile.lock
@@ -1,37 +1,40 @@
PATH
remote: .
specs:
ordered_tree (0.2.1)
activerecord (>= 4.0)

GEM
remote: http://rubygems.org/
remote: https://rubygems.org/
specs:
activemodel (3.1.1)
activesupport (= 3.1.1)
builder (~> 3.0.0)
i18n (~> 0.6)
activerecord (3.1.1)
activemodel (= 3.1.1)
activesupport (= 3.1.1)
arel (~> 2.2.1)
tzinfo (~> 0.3.29)
activesupport (3.1.1)
multi_json (~> 1.0)
arel (2.2.1)
builder (3.0.0)
activemodel (4.0.2)
activesupport (= 4.0.2)
builder (~> 3.1.0)
activerecord (4.0.2)
activemodel (= 4.0.2)
activerecord-deprecated_finders (~> 1.0.2)
activesupport (= 4.0.2)
arel (~> 4.0.0)
activerecord-deprecated_finders (1.0.3)
activesupport (4.0.2)
i18n (~> 0.6, >= 0.6.4)
minitest (~> 4.2)
multi_json (~> 1.3)
thread_safe (~> 0.1)
tzinfo (~> 0.3.37)
arel (4.0.1)
atomic (1.1.14)
builder (3.1.4)
coderay (1.0.9)
diff-lcs (1.1.3)
ffi (1.0.10)
git (1.2.5)
guard (0.8.8)
thor (~> 0.14.6)
guard-rspec (0.5.3)
guard (>= 0.8.4)
i18n (0.6.0)
jeweler (1.6.4)
bundler (~> 1.0)
git (>= 1.2.5)
rake
libnotify (0.5.9)
multi_json (1.0.3)
rake (0.9.2.2)
rb-inotify (0.8.8)
ffi (>= 0.5.0)
rcov (0.9.11)
i18n (0.6.9)
method_source (0.8.2)
minitest (4.7.5)
multi_json (1.8.2)
pry (0.9.12.2)
coderay (~> 1.0.5)
method_source (~> 0.8)
slop (~> 3.4)
rspec (2.6.0)
rspec-core (~> 2.6.0)
rspec-expectations (~> 2.6.0)
Expand All @@ -40,20 +43,19 @@ GEM
rspec-expectations (2.6.0)
diff-lcs (~> 1.1.2)
rspec-mocks (2.6.0)
sqlite3 (1.3.4)
thor (0.14.6)
tzinfo (0.3.31)
slop (3.4.7)
sqlite3 (1.3.8)
thread_safe (0.1.3)
atomic
tzinfo (0.3.38)

PLATFORMS
ruby

DEPENDENCIES
activerecord (>= 3.1.1)
bundler (~> 1.0.0)
guard-rspec
jeweler (~> 1.6.2)
libnotify
rb-inotify
rcov
rspec (~> 2.6.0)
activerecord
activesupport
ordered_tree!
pry (= 0.9.12.2)
rspec
sqlite3
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

18 changes: 12 additions & 6 deletions lib/ordered_tree.rb
Expand Up @@ -27,17 +27,23 @@ def ordered_tree(options = {})
self.ordered_tree_config[:primary_key] ||= :id
self.ordered_tree_config.update(options) if options.is_a?(Hash)

belongs_to :parent_node,
belongs_to(
:parent_node,
lambda { |instance| where(instance.send(:scope_condition)) },
:class_name => self.name,
:foreign_key => ordered_tree_config[:foreign_key],
:primary_key => ordered_tree_config[:primary_key],
:conditions => proc {scope_condition}
has_many :child_nodes,
)
has_many(
:child_nodes,
lambda { |instance|
where(instance.send(:scope_condition)).
order(ordered_tree_config[:order])
},
:class_name => self.name,
:foreign_key => ordered_tree_config[:foreign_key],
:primary_key => ordered_tree_config[:primary_key],
:conditions => proc {scope_condition},
:order => ordered_tree_config[:order]
:primary_key => ordered_tree_config[:primary_key]
)
scope :roots, lambda { |*args|
column = "#{self.table_name}.#{self.ordered_tree_config[:foreign_key].to_sym}"
scope_condition = args[0]
Expand Down
13 changes: 7 additions & 6 deletions lib/ordered_tree/instance_methods/list.rb
Expand Up @@ -116,9 +116,10 @@ def move_to(new_position, on_create = false)
# moving from lower to higher, increment all in between
# #{order_column} >= #{new_position} AND #{order_column} < #{position_in_list}
self.class.transaction do
self.class.update_all(
"#{order_column} = (#{order_column} + 1)", "#{scope} AND (#{order_column} BETWEEN #{new_position} AND #{position_in_list - 1})"
)
self.class.#where(order_column => order_column + 1).
where(scope).
where("#{order_column} BETWEEN #{new_position} AND #{position_in_list - 1}").
update_all("#{order_column} = (#{order_column} + 1)")
if on_create
self[order_column] = new_position
else
Expand All @@ -129,9 +130,9 @@ def move_to(new_position, on_create = false)
# moving from higher to lower, decrement all in between
# #{order_column} > #{position_in_list} AND #{order_column} <= #{new_position}
self.class.transaction do
self.class.update_all(
"#{order_column} = (#{order_column} - 1)", "#{scope} AND (#{order_column} BETWEEN #{position_in_list + 1} AND #{new_position})"
)
self.class.where(scope).
where("#{order_column} BETWEEN #{position_in_list + 1} AND #{new_position}").
update_all("#{order_column} = (#{order_column} - 1)")
update_attribute(order_column, new_position)
end
end
Expand Down
3 changes: 3 additions & 0 deletions lib/ordered_tree/version.rb
@@ -0,0 +1,3 @@
module OrderedTree
VERSION = "0.2.1"
end
85 changes: 13 additions & 72 deletions ordered_tree.gemspec
@@ -1,85 +1,26 @@
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
# -*- encoding: utf-8 -*-
$: << File.join(File.dirname(__FILE__), "lib")
require "ordered_tree/version"

Gem::Specification.new do |s|
s.name = %q{ordered_tree}
s.version = "0.2.1"
s.version = OrderedTree::VERSION

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Ramon Tayag"]
s.date = %q{2011-11-13}
s.description = %q{Uses parent_id and position to create an ordered tree.}
s.email = %q{ramon@tayag.net}
s.extra_rdoc_files = [
"LICENSE.txt",
"README.textile"
]
s.files = [
".rvmrc",
"CHANGELOG",
"Gemfile",
"Gemfile.lock",
"Guardfile",
"LICENSE.txt",
"README.textile",
"Rakefile",
"VERSION",
"lib/ordered_tree.rb",
"lib/ordered_tree/class_methods.rb",
"lib/ordered_tree/instance_methods.rb",
"lib/ordered_tree/instance_methods/destroy.rb",
"lib/ordered_tree/instance_methods/list.rb",
"lib/ordered_tree/instance_methods/misc.rb",
"lib/ordered_tree/instance_methods/tree.rb",
"ordered_tree.gemspec",
"spec/fixtures/category.rb",
"spec/fixtures/page.rb",
"spec/fixtures/person.rb",
"spec/ordered_tree_spec.rb",
"spec/spec_helper.rb"
]
s.homepage = %q{http://github.com/ramontayag/ordered_tree}
s.licenses = ["MIT"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.6.2}
s.summary = %q{Gem version of Wizard's ActsAsTree}

if s.respond_to? :specification_version then
s.specification_version = 3
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]

s.email = %q{ramon@tayag.net}

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<activerecord>, [">= 3.1.1"])
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
s.add_development_dependency(%q<rcov>, [">= 0"])
s.add_development_dependency(%q<sqlite3>, [">= 0"])
s.add_development_dependency(%q<guard-rspec>, [">= 0"])
s.add_development_dependency(%q<libnotify>, [">= 0"])
s.add_development_dependency(%q<rb-inotify>, [">= 0"])
else
s.add_dependency(%q<activerecord>, [">= 3.1.1"])
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
s.add_dependency(%q<rcov>, [">= 0"])
s.add_dependency(%q<sqlite3>, [">= 0"])
s.add_dependency(%q<guard-rspec>, [">= 0"])
s.add_dependency(%q<libnotify>, [">= 0"])
s.add_dependency(%q<rb-inotify>, [">= 0"])
end
else
s.add_dependency(%q<activerecord>, [">= 3.1.1"])
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
s.add_dependency(%q<rcov>, [">= 0"])
s.add_dependency(%q<sqlite3>, [">= 0"])
s.add_dependency(%q<guard-rspec>, [">= 0"])
s.add_dependency(%q<libnotify>, [">= 0"])
s.add_dependency(%q<rb-inotify>, [">= 0"])
end
s.add_runtime_dependency(%q<activerecord>, [">= 4.0"])
s.add_development_dependency(%q<activesupport>, [">= 4.0"])
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
s.add_development_dependency(%q<sqlite3>, [">= 0"])
end

7 changes: 4 additions & 3 deletions spec/ordered_tree_spec.rb
Expand Up @@ -190,14 +190,15 @@ def scope_condition
end

it "should reorder the list when stuff are destroyed" do
people_count = @people.count
@people[0].descendants.should == [@people[1],@people[2],@people[3],@people[4],@people[7],@people[8],@people[9],@people[10],@people[5],@people[6]]
@people[5].self_and_siblings.should == [@people[1],@people[2],@people[5],@people[6]]
@people[5].position_in_list.should == 3
# taint people[2].parent (since the plugin protects against this)
@people[10].children << @people[2]
@people[2].parent.should == @people[10]
@people[2].destroy.should_not be_nil
Person.count.should == @people.count - 7
Person.count.should == people_count - 7
# Note that I don't need to reload self_and_siblings or children in this case,
# since the re-ordering action is actually happening against people[0].children
# (which is what self_and_syblings returns)
Expand Down Expand Up @@ -254,9 +255,9 @@ def scope_condition

describe "#move_to_bottom" do
it "should do properly set the position_in_list" do
@people = Person.find(:all)
@people = Person.all
(@people[4].move_to_bottom).should_not be_false
@people = Person.find(:all)
@people = Person.all
@people[3].position_in_list.should == 1
@people[9].position_in_list.should == 2
@people[10].position_in_list.should == 3
Expand Down

0 comments on commit f0f117c

Please sign in to comment.