`
firebody
  • 浏览: 40728 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

一个简易的ruby AOP框架 。

阅读更多
在开发smart memcache的过程中 ,开发了一个简易的 ruby aop 。

支持 before,after,rescue 的拦截,支持重复,任意组合的拦截声明 。

在后续的版本支持 arround interceptor声明。

基本的使用代码如下:
after 拦截使用:
@ruby_aop = AOP::RubyAop.new 
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:after) { |aop_info,*args| # your after block here }


说明:

aop_info 为aop的元数据,类型为hash。 主要元数据:
 @aop_inf[:intercepted_class]  被拦截的类名(quanlified class name)
 @aop_inf[:intercepted_method]  被拦截的方法名(symbol)
 @aop_inf[:intercepted_method_is_class_method] 是否类方法) (true|false)


*args 为被拦截的方法调用的参数。

before 拦截使用:
@ruby_aop = AOP::RubyAop.new 
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:before) { |aop_info,*args| # your after block here }


:interceptor_type=>:before 由after改为 before

rescue同样的 : :interceptor_type=>:rescue

rescue的话,aopinfo里面可以通过 :error获取到异常信息。

后续版本会做一个arround interceptor的支持 ,大概使用例子如下:
arround_statement_str=<<END
   #hahahah before statement here
   AOP_ORIGINAL_METHOD_CALL
   ##bla bla after statement here 
   
END


@ruby_aop = AOP::RubyAop.new 
@ruby_aop.interceptor(:classes=>["User","Teacher"],:methods=>[:update_all],:interceptor_type=>:arround,:arround_body=>arround_statement_str) 


其中arround_statement_str里面的原来方法的调用必须使用一个特殊的标志串 :
AOP_ORIGINAL_METHOD_CALL

分享到:
评论

相关推荐

    基于Java全栈开发的Nutz框架:Mvc/Ioc/Aop/Dao/Json一体化设计源码

    该项目为全栈Java开发,采用Nutz框架实现Mvc/Ioc/Aop/Dao/Json一体化设计,源码包含2307个文件,涵盖1742个Java源文件、208个man文档、143个png图片...Nutz框架旨在为所有Java开发者提供一个高效、易用的全栈解决方案。

    JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架.rar

    JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有 Java 语言所有优势的同时再拥有 ruby、python...

    VS.NET开源框架

    MonoRail 是 Ruby onRail 的 .NET 实现,这是一个 MVC Web 框架。它与传统 WebForm 在控制上的不同在于 WebForm 采用页控制器模式,而 MVC 采用前端控制器模式。在界面表达方式上 MonoRail 采用模板引擎输出,模板...

    JAVA各种系统框架图简介

    Spring是企业级Java应用的事实标准,它是一个全面的开发框架,支持依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问、Web应用以及更多的功能。Spring Boot使得创建独立的、生产级别的基于Spring的应用变得...

    java开发所有框架简介

    接下来是EasyJWeb,它是一个简易的Java Web框架,旨在帮助开发者快速构建Web应用。它通过简单的配置和约定来减少开发中的繁琐工作。 还有Tapestry框架,它属于一种比较早期的框架,采用组件驱动的方式来构建Web页面...

    Doraemon,深入了解一些常见的后端框架.zip

    本资源“Doraemon,深入了解一些常见的后端框架.zip”似乎是一个开源项目,旨在帮助开发者更深入地理解一些常用的后端框架。让我们详细探讨一下这些后端框架。 1. **Spring Framework**: Spring是最广泛使用的Java...

    AOP-OC:Objective C 的一个小 aop 实现

    通常,这样的项目会包含README文件,解释如何使用、安装和定制这个AOP框架,以及示例代码来演示其功能。 在Objective-C中实现AOP,通常涉及以下技术: 1. **分类(Category)**:Objective-C允许通过类别为已有的...

    Jfina 自搭框架

    Jfinal 是一个MVC(Model-View-Controller)架构的实现,它借鉴了Ruby on Rails的许多设计理念,使得Java开发者也能体验到快速开发的乐趣。 在Jfina框架中,主要包含以下几个核心概念: 1. **Controller**:控制器...

    后台布局,框架学习

    - **Spring**:Java领域的主流框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,广泛应用于企业级应用。 - **Django**:Python中的全栈框架,以其快速开发和内置的安全特性著名,适合...

    【吐血推荐】史上最全的开发框架源码合集

    9. **Ruby on Rails**:Ruby语言的Web开发框架,强调DRY(Don't Repeat Yourself)原则和Convention Over Configuration。阅读Rails源码,可以了解MVC架构和ActiveRecord的实现。 10. **Flask**:Python的小型轻量...

    jspweb框架

    一个典型的JSPWeb框架项目包括以下组成部分: - **src/main/java**:存放Java源代码,包括控制器、模型和服务类。 - **src/main/resources**:存储配置文件和其他资源,如数据库连接字符串、国际化消息文件等。 - *...

    小日本的开源框架 Seasar2

    Seasar2是一个源自日本的开源框架,其设计目标是为Java开发者提供轻量级的容器服务,以提高开发效率和代码质量。与许多其他轻量级容器不同,Seasar2强调了无需编写配置文件的特性,它采用了Convention over ...

    后端开发框架整理.rar

    5. **Ruby on Rails**:Rails是Ruby语言的明星框架,它倡导“Convention over Configuration”原则,使开发过程更加高效。Rails的ActiveRecord提供了强大的ORM能力,而Action Cable则支持实时Web应用。 6. **Flask*...

    后端开发框架是用于构建和管理服务器端应用程序的软件框架,它们提供了一系列工具和库,帮助开发者简化后端应用的开发、部署和维护 以下

    **Ruby on Rails**(简称Rails)是一个开发效率高、约定优于配置的Web应用框架,提供了ORM(对象关系映射)、MVC(模型-视图-控制器)架构等特性。Rails的特点包括: - **约定优于配置**:Rails通过一系列预定义的...

    后端开发的基本技术与框架

    - **Ruby on Rails框架(Ruby)**: - **核心组件**:基于Ruby语言的Web服务器。 - **特性**:遵循“约定优于配置”的原则,提供ORM支持等。 - **使用场景**:适用于Web应用、企业级应用等。 #### 四、后端开发...

    JFinal极速WEB+ORM框架 v5.1.1

    JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、...

    使用MVC框架开发网站 课件1

    - **Ruby on Rails**:这是一个基于Ruby语言的Web开发框架,完全遵循MVC架构,以其“约定优于配置”的理念和强大的生产力著称。 **学习MVC的步骤** 1. **理解基础概念**:深入学习模型、视图和控制器的职责及其相互...

    jfinal-4.9.01-all.zip

    JFinal 是基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、...

    MVC模式与WEB框架

    2. **Django**:Django是Python语言中的一个全功能Web框架,它遵循MVC模式,并且内置了ORM(对象关系映射)和模板引擎。Django强调快速开发,安全性和可维护性,常用于构建复杂和高性能的Web应用。 3. **Ruby on ...

    mvc框架基础详情

    3. **Ruby on Rails**:基于Ruby语言的框架,推崇“约定优于配置”的开发原则。 4. **Django**:Python语言的Web框架,强调快速开发和DRY(Don't Repeat Yourself)原则。 **在实际开发中,MVC框架的使用步骤通常...

Global site tag (gtag.js) - Google Analytics