今天执行一个页面的的时候发现日志输出了50行的"==> Got Users::User from cache. (0.00000)",觉得很奇怪,没有请求这么多次user啊,分析到后面发现原来是gettext跟cache_fu着两个插件的冲突引起的
他们的方法都是mixin到model中调用,都有一个cache?的方法,gettext的是判断是否cache i18n message,cache_fu的是判断是否cache model,结果gettext的cache?被cache_fu的cache?覆盖了,gettext内部调用了多次cache?就出现了上述的症状,虽然执行结果正常,但背后的行为跟期望的已经是大相径庭了,而且这样的情况还无法通过test来检查,这里要不是默认打开cache_fu的benchmark,根本就不知道问题所在
这样用mixin的时候都要小心了,不知道还有多少隐患,估计ruby以后应该会有相应的解决方案,例如在mixin的时候检查同名方法并产生警告
也给一个写module的建议,只暴露必要的方法,内部的调用还是用一个专有namespace分开
分享到:
- 2008-04-29 12:11
- 浏览 2195
- 评论(5)
- 论坛回复 / 浏览 (5 / 3044)
- 查看更多
相关推荐
Mixin框架是Java编程语言中的一个开源项目,它利用ASM库来实现对类的低级别修改,也就是所谓的"混合"(Mixins)。这个框架的核心概念是将功能或行为注入到目标类中,而无需继承或者使用代理模式。在游戏开发、模块化...
6. **模块(Module)**:Ruby的模块用于实现命名空间,代码重用和混合(mixin)功能。一个类可以包含多个模块,实现多重继承的效果。 7. **异常处理**:Ruby提供了异常处理机制,通过`begin..rescue..end`结构捕获...
Ruby的特点包括:动态类型、垃圾回收、闭包、块、Mixin等。 Ruby语言的名称来源于红宝石(Ruby),它是第四种宝石,symbolize着富有生命力和激情的红色,而 ruby语言也正是如此,它具有生命力和激情,是一种活泼...
你可以定义方法,创建继承结构,使用模块(module)来实现代码复用和类别混合(mixin),以及利用元编程能力动态地修改类的行为。Ruby的块(block)、 Proc 和 Lambda 是实现回调和高阶函数的关键。 元编程是Ruby的...
在微信小程序的开发中,`mixin` 是一种常见的代码复用机制,它允许开发者定义一组通用的方法或者属性,然后将这些通用部分混入(mix in)到不同的页面(Page)或组件(Component)中,避免了代码重复,提高了代码的...
modernizr-mixin, 在Sass中,针对测试的简单而全面的mixin hardwarebutton混合 一种简单的DRYier测试方法,在Sass中更快更。安装要求 ruby 3.4或者 LibSass 3.2Libsass警告:在 Libsass 3.2.3中有一个已知 Bug,它...
dry-configurable, 一个简单的mixin使 ruby 类可以配置 干可以配置 概要class App extend Dry::Configurable # Pass a block for nested configuration (works to any
4. **模块**:Ruby的模块用于实现命名空间、混合-in(mixin)机制,帮助实现代码的复用和组织。 5. **元编程**:Ruby强大的元编程能力允许在运行时修改或创建代码,这是Ruby区别于其他语言的一大特色。 6. **标准...
Ruby的面向对象特性非常突出,类、对象、继承、模块和 Mixin 是其核心组成部分。理解这些概念对于编写高效、可维护的代码至关重要。例如,Ruby中的万物皆对象,每个变量实际上都是一个指向对象的引用,而类则用于...
【ymixin:阅文前端团队的CSS预处理器mixin库详解】 在前端开发中,CSS预处理器如Sass、Less和Stylus等已经成为提升样式编写效率和代码可维护性的必备工具。ymixin,作为阅文前端团队打造的一款CSS预处理器mixin库...
类定义了对象的行为,而模块则提供了命名空间和混合(mixin)功能,可以将行为插入到多个类中。 Ruby还拥有丰富的标准库,包括文件操作、网络通信、日期和时间处理等,这些都通过简单的API供开发者使用。此外,Ruby...
6. **模块**:模块用于组织代码,提供命名空间,支持混入(mixin)功能,允许类吸收其他类或模块的方法。 7. **异常处理**:Ruby提供了try-catch机制来处理程序运行时可能出现的错误,通过rescue关键字来捕获并处理...
此外,深入理解对象模型和类的继承、模块的使用、 Mixin机制对于写出高效且可维护的代码至关重要。 Ruby的一大特色是其强大的元编程能力,这意味着在运行时可以修改甚至创建代码。例如,你可以动态添加方法到类,...
Ruby还支持模块(Module),用于实现命名空间、封装和混合(mixin)功能。 Ruby的异常处理机制允许程序员捕获和处理运行时错误。`begin..rescue..end`结构用于定义异常处理块,`raise`用于抛出异常。 在资源管理...
模块用于实现代码重用和封装,同时提供了混合(mixin)功能,可以让一个类包含另一个模块的方法。继承则允许一个类继承另一个类的属性和方法。 Ruby中的控制流结构丰富,包括条件语句(如if/else、case)、循环(如...
### Ruby语言介绍与基础知识 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Matsumoto Yukihiro)于1993年开始开发。起初,Ruby是作为一种兴趣项目而诞生的,但...
- 模块用于组织代码,可以包含常量、类方法和实例方法,也可以实现类的多重继承(mixin)。 - 源代码中会展示如何使用`include`和`extend`关键字引入模块。 4. **异常处理** - `begin-rescue-end`结构用于处理...
mixin是一个闪电交易快速的点点对的数字交道项目,它拥有非常好的技术栈。
- **模块**:用于封装代码,支持混合(mixin)功能到类中。 - **单态方法**:只属于一个特定对象的方法,不同于类方法。 - **全局变量**、**实例变量**和**局部变量**:不同作用域内的变量类型。 - **类常量**:属于...