# \[ANN\] ActiveWarehouse 0.3.0 Released

**URL:** <https://www.ruby-forum.com/t/ann-activewarehouse-0-3-0-released/104065>\
**Category:** Rails\
**Created:** [May 13, 2007, 11:17pm UTC](https://www.ruby-forum.com/t/ann-activewarehouse-0-3-0-released/104065 "2007-05-13T23:17:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![chovy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/ecd19e/32.png) [@chovy](https://www.ruby-forum.com/u/chovy)\
**Post date:** [May 13, 2007, 11:17pm UTC](https://www.ruby-forum.com/t/ann-activewarehouse-0-3-0-released/104065/1 "2007-05-13T23:17:32Z")

</div>

ActiveWarehouse 0.3.0 is now available as a Gem, Zip or Gzip file from  
RubyForge. You may also install directly from the subversion  
repository, as always.

ActiveWarehouse is an open source plugin for Rails that extends Rails  
to add support for data warehouse development. It has base classes for  
facts, dimensions, bridges and cubes as well as aggregation  
strategies, hierarchal dimensions, role-playing dimensions, etc. It  
includes generators for each of the base classes and their migrations  
and unit test stubs.

It’s been a while (3 months to be exact) since I’ve done a proper  
ActiveWarehouse release, however development has been progressing on  
all parts of the framework. The cube implementation has been  
completely redesigned to support pluggable aggregation. Aggregation  
has been refactored as well to support aggregation across more than  
just two dimensions. Currently there is support for a direct query  
aggregate (i.e. non-persistent) and a ROLAP aggregate. We are  
currently working on other aggregation methods for future releases.  
Facts now define their dimensions using the dimension directive which  
has behavior that extends the belongs\_to from ActiveRecord.

0.3.0 Changes include:

- Updated docs.
- Fixed bug in report helper so that dimension ordering override now  
works as  
expected.
- Changed dimension migration generator template to remove all the  
extraneous  
code.
- Complete overhaul of the Cube class implementation.
- Cube query results now encapsulated in the CubeQueryResult class.
- Cube query method now takes two forms, either the old style form with  
4  
required arguments and 5 optional arguments (with the last argument an  
options Hash) or the new style which takes a single Hash of options.
- Completely rewrote aggregation system. Cubes now delegate aggregation  
to  
Aggregation implementation classes.
- Developed NoAggregate aggregation strategy that goes directly to the  
fact  
and dimension tables.
- Refactored render\_report helper.
- Refactored bridge class to allow for extension for specific bridge  
types  
(such as hierarchical bridges or weighted grouping bridges).
- Aggregate fields are now defined with classes. The base class is the  
Field  
class and it is implemented by AggregateField and CalculatedField.
- Added support for prejoining a fact with some or all of its dimensions
- Dimension to fact relationships are now defined with the dimension  
directive  
in the Fact class. This directive delegates to belongs\_to.
- PosRetailSalesTransactionCube would now default to using  
PosRetailSalesTransactionFact and all of its dimensions as its report\_on  
and  
pivots\_on configuration by default. This means you only need to create a  
cube  
class and then can define report\_on or pivots\_on if you need to override  
these defaults.
- Updated dimension view support, used for dimension role-playing.
- DateDimension is now implemented as a class extending from Dimension.
- Test cases modified to reflect ETL changes as well as new  
functionality.

Documentation is available at  
[http://activewarehouse.rubyforge.org/rdoc/](http://activewarehouse.rubyforge.org/rdoc/) . Enjoy!

–  
Cell: 808 782-5046  
Current Location: Melbourne, FL
