Hompage / Report Issue / Source Code / Mailing List / IRC Channel

Build Status


Anise is an Annotation System for the Ruby programming language. Unlike most other annotations systems it is not a comment-based or macro-based system that sits over-and-above the rest of the code. Rather, Anise is a dynamic annotations system operating at runtime.


To install with RubyGems simply open a console and type:

gem install anise

To manually install you will need Setup.rb (see Then download the tarball package and do:

$ tar -xvzf anise-0.2.0.tgz
$ cd anise-0.2.0
$ sudo setup.rb all


The following example briefly demonstrates all three major features. To use any of them first require the anise library.

 require 'anise'

General annotations are provided by the Anise::Annotations module.

class X
  extend Anise::Annotations

  ann :grape, :class=>String

X.ann(:grape, :class)  #=> String

Annotated attributes can be easily added to a class via the Annotative::Attributes module.

class X
  extend Anise::Annotative::Attributes

  attr :baz, Integer, :max => 10

X.ann(:baz)  #=> {:class=>Integer, :max=>10}

Mewthod annotations can be had via the AnnotatedMethods module.

class X
  extend Anise::Annotative::Methods

  def self.doc(string)

  doc "This is an entry."

  def bar
    # ...

X.ann(:bar)  #=> {:doc=>"This is an entry."}

Any of these modules can be used in conjunction. Since both AnnotatedMethods and AnnotatedAttributes preclude Annotations all three can be used by simply using the later two.

 class X
   extend Anise::Annotative::Attributes
   extend Anise::Annotative::Methods


Note also that the Anise module is clean and contains only modules and classes with detailed names starting the "Annotat-", so it is prefectly convenient for inclusion in the toplevel namespace or your own applications namespace.

module MyApp
  include Anise

  class Foo
    extend Annotative::Attributes



Test Instructions

Ainse has two test suites, one using QED and the other using Citron which is built on RubyTest.

To run the QED demonstrations simple run:

$ qed

To run the Citron-based unit tests use:

$ rubytest


Copyright (c) 2008 Rubyworks. All rights reserved.

This program is distributed under the terms of the BSD-2-Clause license.

See LICNESE.txt file for details.