写点什么

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:241027
用户头像

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

关注

评论

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

翻译:《实用的Python编程》01_05_Lists

codists

人工智能 后端 python 爬虫 列表 数据结构与算法

第四章作业-编写一个用例文档

秦挺

【活动回顾】4步2小时,搭建爆火的语音聊天室

ZEGO即构

ElasticSearch.03 - 基本原理

insight

elasticsearch 2月春节不断更

开发利器——C语言必备实用第三方库

码哥比特

c c++ Linux 后端 框架

【STM32】PWM 输出 (标准库)

AXYZdong

硬件 stm32 2月春节不断更

消息队列Kafka:入门基础

正向成长

kafka

IDEA插件:快速删除Java代码中的注释

xiaoxi666

Java 代码注释 JavaParser

写公号大半年,看看我都收获了些啥

架构精进之路

技术 总结 微信公众号 成长笔记

1.开篇(听说你还在艰难的啃react源码)

全栈潇晨

React React Hooks react源码

13. 如果自己写的 Python 程序出错了,怎么办?

梦想橡皮擦

python 爬虫 2月春节不断更

gradle中的增量构建

程序那些事

maven Gradle 程序那些事 构建工具

揭秘登上2021春晚舞台的黑科技-XR技术

架构精进之路

黑科技 vr 春晚 XR MR

数据量大读写缓慢如何优化(5)【读缓存】

我爱娃哈哈😍

redis 缓存 架构设计实战 缓存设计

【LeetCode】数组拆分Java题解

Albert

算法 LeetCode 2月春节不断更

这是我的第一次JavaScript初级技巧

我是哪吒

JavaScript 学习 程序员 大前端 2月春节不断更

第一次异地过年有感

石君

思考 情感

EternalWallet为您提供快速、便捷、低价的国际汇款服务

Geek_c610c0

3.Fiber(我是在内存中的dom)

全栈潇晨

React React Hooks react源码

1480. 一维数组的动态和

小马哥

算法 七日更

微信红包封面,2021年为啥突然火了?

架构精进之路

春节 微信红包封面 商业洞察

2.react心智模型(来来来,让大脑有react思维吧)

全栈潇晨

React React Hooks react源码

春节快过腻了?不妨关心下太空探索

脑极体

日记 2021年2月17日(周三)

Changing Lin

2月春节不断更

深度讲解背包问题:面试中每五道动态规划就有一道是背包模型 ...

宫水三叶的刷题日记

深度思考 面试 LeetCode 动态规划 数据结构与算法

今日笔记

Nydia

C语言实用第三方库Melon开箱即用之多线程模型

码哥比特

c c++ Linux 后端 框架

给hugo博客添加评论功能

远鹏

Hugo 静态博客 utterances

诊所数字化:诊所老板为什么拒绝预约制?

boshi

数字化转型 医院 七日更

C语言第三方库Melon开箱即用之词法分析器使用

码哥比特

c c++ Linux 后端 框架

程序员成长第五篇:如何选择城市工作?

石云升

程序员 2月春节不断更 选择城市

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