有哪些框架可以为Ruby添加AOP功能?
使用 Ruby 2.0+,您不一定需要一个框架:
module BarkLogger
def bark
puts "Logging #@name's bark!"
super
end
end
class Dog
prepend BarkLogger
def initialize(name)
@name = name
end
def bark
puts "#@name the dog says bark!"
end
end
Dog.new("Rufus").bark
输出:
记录Rufus的吠声!
Rufus狗说汪汪!
我在大学项目中尝试过2到3年前的Aquarium gem。效果很好,项目的目的是与AspectJ进行比较,以找出它是否能够像AspectJ一样完成所有任务。当时,许多AspectJ能够完成的功能都缺失了。但现在我看到有很多新功能被添加进去了,所以值得再次尝试。
AspectR(最后一次发布似乎是在2002年)- 最初是Ruby中规范的AOP库。
Facets - 具有一些AOP功能。