写点什么

RubyGems 新增对 Plugins 的支持

  • 2009-05-04
  • 本文字数:970 字

    阅读完需:约 3 分钟

最近发布的 RubyGems1.3.2 版本绝不仅仅只是一个 Bug 修复版,它还包括了一些新的功能:

在 RubyGems 1.3.2 中,RubyGems 可以加载安装在 gems 或者 $LOAD_PATH 中的插件。插件的名字必须以‘rubygems_plugin’的形式命名,然后 Gem::find_files 才能找到这个插件并且加载。

Ryan Davis 介绍了一个例子: Graph plugin 生成了一个所有已安装的 Gems 的依赖和信息图(过时的,或者即将需要的依赖)。

我们采访了 RubyGems 的维护者 Eric Hodel,来了解关于 RubyGems 插件的更多细节:

这个特性要求 RubyGems 的开发者加入很多人们希望加入的功能,有些功能是可以作为一个单独的包来完成。在安装的时候程序也可以做一些事情,或者要求用户来手动进行干涉。 这个插件最开始是一个 Neil Wilson 编写的补丁,这个插件能够将安装的钩子添加到 Debian 的 RubyGems 中,使得两者更加方便地集成。使用他的插件,我们需要添加两个特定的文件,这样 RubyGems 就能够在启动的时候尝试请求 ruby 包管理器的 rubygems/defaults/operating_system.rb 和 ruby 实现器的 rubygems/defaults/#{RUBY_ENGINE}.rb 来添加特定功能。例如,Rubinius 能够在 gem 中预编译所有的.rb 文件以减少启动时间。

大约在同一时间,我加入了 Gem.find_files 允许 gem 作者方便地构建他们自己的插件系统。RDoc 就是使用这个来自动地加载其插件。

由于它在 RDoc 上表现得非常优秀,所以我决定在 RubyGems 中也加入相同的功能。

我不会试图让插件能够广泛地挂载到 RubyGems 每一个可能的地方。我确定开发者非常希望能够挂载到那些现在不易存取的领域,我希望他们能够提交一些新特性请求,帮助我来改进 RubyGems。对我来说,为一个插件改进 API 比维护一个全新的特性容易得多。

我的愿望是富有创造力的开发者能够提供无需我在 RubyGems 提供并且维护的令人惊喜的有用功能。

除了 Graph 插件,也有一个叫做 rubypan 的插件,它在 rubypan.org 上寻找 gem。它们能够工作在“一个能够创建 OS X 字典的插件”上,这个插件所依赖的 ri 数据能够在你安装或者卸载 gem 的时候自动更新。

插件作者能够将插件挂载到 RubyGems 的安装或者卸载前后的过程,详细见 Gem 文档。编写一个自己的 command 插件是非常简单的:编写一个 Command 的子类,然后将其注册到 Gem::CommandManager

你肯错过 RubyGems 中插件提供的特性吗?

查看英文原文: RubyGems Gets Plugins

2009-05-04 00:241156
用户头像

发布了 90 篇内容, 共 35.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

共探数据可信流通时代的密态新算力|走进隐语年度嘉年华精彩现场

隐语SecretFlow

从设计到伴飞:数字孪生赋能航空航天新时代

DevOps和数字孪生

航天航空

解析与构建:基于语法树的代码规则定义

测试人

软件测试

解锁微店商品数据:深度探索item_get API接口及其应用

代码忍者

微店商品详情API接口

MIAOYUN信创云原生项目亮相“科创天府·智汇蓉城”西部“中试”生态对接活动

MIAOYUN

云计算 云原生 创新 信创 信创产业

代码复杂度定义与分析方法

测试人

软件测试

【YashanDB知识库】yashandb升级后,yasboot restart出现版本回退、报错control file version incompatible

YashanDB

数据库 yashandb

阿里巴巴1688 API接口深度解析:高效获取商品详情与关键词搜索商品实战指南

代码忍者

1688API接口

2024 京东零售技术年度总结

京东零售技术

代码质量保证的利器:Git 预提交钩子

俞凡

最佳实践

【YashanDB知识库】个别数据库用户无法登录数据库,报错 io fail:IO.EOF

YashanDB

数据库 yashandb

【YashanDB知识库】隐藏参数怎么查看初始值

YashanDB

数据库 yashandb

【YashanDB知识库】如何使用MySQL客户端链接YashanDB

YashanDB

数据库 yashandb

复盘2024,大模型的商业化主线是什么?

脑极体

AI

百度HelixFold 3重磅升级 打造生命科学领域“超强引擎”

新消费日报

百度HelixFold 3重磅升级 打造生命科学领域“超强引擎”

Geek_2d6073

【YashanDB知识库】过期统计信息导致SQL执行计划变差

YashanDB

数据库 yashandb

【YashanDB知识库】原生mysql驱动配置连接崖山数据库

YashanDB

数据库 yashandb

【YashanDB知识库】解压安装包时报错"tar:Error is not recoverable"

YashanDB

数据库 yashandb

分析代码变更与新增代码覆盖率的最佳实践

测试人

软件测试

AI Agent:一场智能革命的开始

TechubNews

AI Agent

RubyGems新增对Plugins的支持_Ruby_Mirko Stocker_InfoQ精选文章