Skip to content
rodrigolive edited this page Sep 13, 2010 · 2 revisions

NAME

CatalystX::Features – Merges different application directories into your app.

VERSION

version 0.10

SYNOPSIS

package MyApp; use Catalyst qw/-Debug +CatalystX::Features +CatalystX::Features::Plugin::ConfigLoader +CatalystX::Features::Plugin::Static::Simple/;

DESCRIPTION

The idea fo this module is to make it easier to spread out outside of the main application directory, in the spirit of Eclipse features and Ruby on Rails plugins.

It’s mainly useful if you’re working on a large application with distinct isolated features that are not tightly coupled with the main app and could be pulled off or eventually reused somewhere else.

It also comes handy in a large project, with many developers working on specific application parts. And, say, you wish to split the functionality in diretories, or just want to keep them out of the application core files.

USAGE

  • Create a directory under your app home named /features
  • Each feature home dir should be named something like:

/features/my.demo.feature_1.0.0

It’s a split on underscore “_”, the first part is the feature name, the second is the feature version.

If a higher version of a feature is found, that’s the one to be used, the rest is ignored
- a feature without a version is ok, it will be the highest version available – good for local dev and pushing to a repository.
- a debug box is printed on startup, so you can check which version is running:

[debug] Features Loaded: .----------------------------------------+------------------------+----------. | Home | Name | Version | +----------------------------------------+------------------------+----------+ | simple.feature_1.0.0 | simple.feature | 1.0.0 | .-----------------------------------------------------------------+----------.

CONFIGURATION

home

Let’s you set a list of directories where your features are located. It expects full paths.

<CatalystX::Features> home /opt/myapp_features home /somewhere/else

Defaults to:

MyApp/features

METHODS

$c→features

Returns an array of loaded features, which are instances of the L class.

TODO

  • Check dependencies among features.
  • Deploy PAR/ZIP files automatically.
  • What about helpers?
  • The Makefile.PL and tests…
  • Lots of petites things…

AUTHORS

Rodrigo de Oliveira (rodrigolive), C<rodrigolive@gmail.com>

COPYRIGHT & LICENSE

Copyright © 2009 the aforementioned authors. All rights
reserved. This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.