Ruby编程:插件系统设计、全局冻结与元编程的应用
1. 插件系统设计与配置
在设计插件系统时,我们需要确保插件能够正确加载到子类中。以下是一个测试插件加载到子类是否正常工作的示例代码:
libry = Class.new(Libry)
user = libry::User.new 1
book = libry::Book.new 'a'
user.checkout(book)
libry.plugin(:auto_curse)
user.curse!
同时,我们还需要测试插件加载是否不会影响到父类:
user = Libry::User.new 1
user.respond_to?(:curse!)
# => false
插件系统的一个重要特性是支持配置。有些插件可能不需要配置,但很多插件需要根据用户特定的值进行配置才能发挥作用。实现插件配置的一种简单方法是允许用户在加载插件时传递参数。例如,我们可以让 Tracking 插件接受一个块,该块会对每个被跟踪的对象进行处理。以下是实现该功能的步骤:
1. 让 Libry.plugin 方法接受参数,并将这些参数传递给 before_load 和 after_load 方法:
class Libry
def self.plugin(mod
Ruby插件系统与元编程应用
超级会员免费看
订阅专栏 解锁全文
31

被折叠的 条评论
为什么被折叠?



