aspect4r

Aspect Oriented Programming support for Ruby

Feature

  • extract common logic from multiple methods into before, after, around advices

  • before_filter as method filters (work like before_filters in web application)

  • advices can be customized (e.g. to take an optional method name argument)

  • work as a supporting piece for more complex AOP tasks

Usage

class A
  include Aspect4r

  around :test do |proxy_method, value|
    a4r_invoke proxy_method, value
  end

  before :test do |value|
    puts "entering test(#{value})"
  end

  before  :test, :do_something

  before_filter :test do |value|
    value >= 0
  end

  after :test do |result, value|
    puts "test(#{value}) returned #{result}"
    result
  end

  after :test, :do_something_else

  def test value
    ...
  end

  def do_something value
    ...
  end

  def do_something_else result, value
    ...
  end

end

How does it work?

TODO

See github issues tab github.com/gcao/aspect4r/issues

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Guoliang Cao. See LICENSE for details.