Introduction

ArchiveTree is a Ruby Gem for your Ruby on Rails application that makes it easy for you to generate structured trees of your records.

Since it uses a column of your choice, from any ActiveRecord Model, you will have flexibility to use in most of the Ruby on Rails applications

Compatibility

The Gem was developed to work with Rails 3.0.x, running on Ruby 1.8.7 or 1.9.2. Since it uses SQL specific queries, it works on MySQL and PostgreSQL databases.

Note: This gem does not work with Ruby v1.9.1.

Installation

You can install ArchiveTree can be installed as a Ruby gem. This is specially made easy with Bundler. Just add this to your Gemfile


gem 'archive_tree'

It's also possible to install ArchiveTree as a Rails plugin


rails plugin install git://github.com/GnomesLab/archive_tree.git

Demo (live)

If you would like to see this gem in action please visit Gnomeslab blog at http://gnomeslab.com/blog.

Examples

Imagine that you have a blog application with Posts. Great!

Now let's say that you wish to allow your users to sweep through your posts in a chronologically accurate tree view. Enters ArchiveTree!

API

Inclusion:

In your ActiveRecord Model:


acts_as_archive #=> defaults to :created_at

Default usage:


Post.archive_tree #=> { 2010 => { 1 => [Post], 2 => [Post] },
                        2011 => { 1 => [Post], 4 => [Post], 8 => [Post] } }

Sweep all months of the current year:


Post.archive_tree(:years => [Time.now.year]) #=> { 2010 => { 1 => [Post], 2 => [Post] } }

Skip all months other than January (1):


Post.archive_tree(:months => [1]) #=> { 2010 => { 1 => [Post] },
                                      { 2011 => { 1 => [Post] } } }

Only sweep January 2010:


Post.archive_tree(:years_and_months => { 2010 => [1] }) #=> { 2010 => { 1 => [Post] } }

View


draw_archive_tree #=> defaults to: :model_sym => :post, :route => :posts_path, :toggle => true, :toggle_text => '[ + ]'

Documentation

This gem's documentation documentation is available at rubydoc.info

License

Copyright (c) 2010 Diogo Almeida, released under the MIT license. For more information regarding MIT license, please check our MIT license file

Feedback, issues and contributions

If you have an issue with ArchiveTree please create a ticket in our issue tracker.

Feel free to fork this project at any time and submit your changes (along with their respective tests).

Should you just wish to provide feedback or say hi, you can always contact us directly through diogo (dot) almeida (at) gnomeslab (dot) com