11# Closure Tree
22
3- __ Important: please [ vote on the future of ClosureTree] ( https://github.com/mceachen /closure_tree/issues/277 ) !__
3+ __ Important: please [ vote on the future of ClosureTree] ( https://github.com/ClosureTree /closure_tree/issues/277 ) !__
44
55### Closure_tree lets your ActiveRecord models act as nodes in a [ tree data structure] ( http://en.wikipedia.org/wiki/Tree_%28data_structure%29 )
66
77Common applications include modeling hierarchical data, like tags, threaded comments, page graphs in CMSes,
88and tracking user referrals.
99
1010[ ![ Join the chat at https://gitter.im/closure_tree/Lobby ] ( https://badges.gitter.im/closure_tree/Lobby.svg )] ( https://gitter.im/closure_tree/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge )
11- [ ![ Build Status] ( https://api.travis-ci.org/mceachen /closure_tree.svg?branch=master )] ( http://travis-ci.org/mceachen /closure_tree )
11+ [ ![ Build Status] ( https://api.travis-ci.org/ClosureTree /closure_tree.svg?branch=master )] ( http://travis-ci.org/ClosureTree /closure_tree )
1212[ ![ Gem Version] ( https://badge.fury.io/rb/closure_tree.svg )] ( https://badge.fury.io/rb/closure_tree )
13- [ ![ Codacy Badge] ( https://api.codacy.com/project/badge/Grade/fa5a8ae2193d42adb30b4256732a757d )] ( https://www.codacy.com/app/matthew-github/closure_tree )
14- [ ![ Dependency Status] ( https://gemnasium.com/badges/github.com/mceachen/closure_tree.svg )] ( https://gemnasium.com/github.com/mceachen/closure_tree )
13+ [ ![ Dependency Status] ( https://gemnasium.com/badges/github.com/ClosureTree/closure_tree.svg )] ( https://gemnasium.com/github.com/ClosureTree/closure_tree )
1514
1615Dramatically more performant than
1716[ ancestry] ( https://github.com/stefankroes/ancestry ) and
@@ -28,7 +27,7 @@ closure_tree has some great features:
2827* __ Best-in-class mutation performance__ :
2928 * 2 SQL INSERTs on node creation
3029 * 3 SQL INSERT/UPDATEs on node reparenting
31- * __ Support for [ concurrency] ( #concurrency ) __ (using [ with_advisory_lock] ( https://github.com/mceachen /with_advisory_lock ) )
30+ * __ Support for [ concurrency] ( #concurrency ) __ (using [ with_advisory_lock] ( https://github.com/ClosureTree /with_advisory_lock ) )
3231* __ Tested against ActiveRecord 4.2, 5.0, and 5.1, with Ruby 2.2 and 2.3__
3332* Support for reparenting children (and all their descendants)
3433* Support for [ single-table inheritance (STI)] ( #sti ) within the hierarchy
@@ -255,7 +254,7 @@ b.hash_tree(:limit_depth => 2)
255254Without this option, ```hash_tree``` will load the entire contents of that table into RAM. Your
256255server may not be happy trying to do this.
257256
258- HT: [ancestry](https://github.com/stefankroes/ancestry#arrangement) and [elhoyos](https://github.com/mceachen /closure_tree/issues/11)
257+ HT: [ancestry](https://github.com/stefankroes/ancestry#arrangement) and [elhoyos](https://github.com/ClosureTree /closure_tree/issues/11)
259258
260259### Eager loading
261260
@@ -306,13 +305,13 @@ File.open("example.dot", "w") { |f| f.write(Tag.root.to_dot_digraph) }
306305` ` `
307306Then , in a shell, ` ` ` dot -Tpng example.dot > example.png` ` ` , which produces:
308307
309- ! [Example tree](https: // raw.github.com/ mceachen / closure_tree/ master/ img/ example.png)
308+ ! [Example tree](https: // raw.github.com/ ClosureTree / closure_tree/ master/ img/ example.png)
310309
311310If you want to customize the label value, override the ` ` ` #to_digraph_label` ` ` instance method in your model.
312311
313312Just for kicks, this is the test tree I used for proving that preordered tree traversal was correct:
314313
315- ! [Preordered test tree](https: // raw.github.com/ mceachen / closure_tree/ master/ img/ preorder.png)
314+ ! [Preordered test tree](https: // raw.github.com/ ClosureTree / closure_tree/ master/ img/ preorder.png)
316315
317316# ## Available options
318317
@@ -485,7 +484,7 @@ Several methods, especially ```#rebuild``` and ```#find_or_create_by_path```, ca
485484
486485Database row- level locks work correctly with PostgreSQL , but MySQL ' s row-level locking is broken, and
487486erroneously reports deadlocks where there are none. To work around this, and have a consistent implementation
488- for both MySQL and PostgreSQL, [with_advisory_lock](https://github.com/mceachen /with_advisory_lock)
487+ for both MySQL and PostgreSQL, [with_advisory_lock](https://github.com/ClosureTree /with_advisory_lock)
489488is used automatically to ensure correctness.
490489
491490If you are already managing concurrency elsewhere in your application, and want to disable the use
@@ -518,7 +517,7 @@ Yup! [Ilya Bodrov](https://github.com/bodrovis) wrote [Nested Comments with Rail
518517
519518# ## Does this work well with ```#default_scope```?
520519
521- ** No .** Please see [issue 86 ](https: // github.com/ mceachen / closure_tree/ issues/ 86 ) for details.
520+ ** No .** Please see [issue 86 ](https: // github.com/ ClosureTree / closure_tree/ issues/ 86 ) for details.
522521
523522# ## Can I update parentage with `update_attribute`?
524523
@@ -527,7 +526,7 @@ hierarchy table.
527526
528527# ## Can I assign a parent to multiple children with ```#update_all```?
529528
530- ** No .** Please see [issue 197 ](https: // github.com/ mceachen / closure_tree/ issues/ 197 ) for details.
529+ ** No .** Please see [issue 197 ](https: // github.com/ ClosureTree / closure_tree/ issues/ 197 ) for details.
531530
532531# ## Does this gem support multiple parents?
533532
@@ -586,11 +585,11 @@ bundle install
586585
587586### Object destroy fails with MySQL v5.7+
588587
589- A bug was introduced in MySQL's query optimizer. [See the workaround here](https://github.com/mceachen /closure_tree/issues/206).
588+ A bug was introduced in MySQL's query optimizer. [See the workaround here](https://github.com/ClosureTree /closure_tree/issues/206).
590589
591590### Hierarchy maintenance errors from MySQL v5.7.9-v5.7.10
592591
593- Upgrade to MySQL 5.7.12 or later if you see [this issue](https://github.com/mceachen /closure_tree/issues/190):
592+ Upgrade to MySQL 5.7.12 or later if you see [this issue](https://github.com/ClosureTree /closure_tree/issues/190):
594593
595594 Mysql2::Error: You can't specify target table '*_hierarchies' for update in FROM clause
596595
627626
628627## Testing
629628
630- Closure tree is [ tested under every valid combination] ( http://travis-ci.org/#!/mceachen /closure_tree ) of
629+ Closure tree is [ tested under every valid combination] ( http://travis-ci.org/#!/ClosureTree /closure_tree ) of
631630
632631* Ruby 2.2, 2.3
633632* ActiveRecord 4.2, 5.0, and 5.1
@@ -638,12 +637,12 @@ run the test matrix locally.
638637
639638## Change log
640639
641- See the [ change log] ( https://github.com/mceachen /closure_tree/blob/master/CHANGELOG.md ) .
640+ See the [ change log] ( https://github.com/ClosureTree /closure_tree/blob/master/CHANGELOG.md ) .
642641
643642## Thanks to
644643
645644* The 45+ engineers around the world that have contributed their time and code to this gem
646- (see the [ changelog] ( https://github.com/mceachen /closure_tree/blob/master/CHANGELOG.md ) !)
645+ (see the [ changelog] ( https://github.com/ClosureTree /closure_tree/blob/master/CHANGELOG.md ) !)
647646* https://github.com/collectiveidea/awesome_nested_set
648647* https://github.com/patshaughnessy/class_factory
649648* JetBrains, which provides an [ open-source license] ( http://www.jetbrains.com/ruby/buy/buy.jsp#openSource ) to
0 commit comments