写点什么

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

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

关注

评论

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

Caddy服务器使用方法

Rayan

运维 https 服务器 SSL证书

工具之书:坚韧

lidaobing

文学少女 28天写作

《从C ++开始》第9版(1200页)

计算机与AI

c++

高德地图、百度地图 都不如“人的智慧”

小匚

Python 深度思考 产品 日常思考

区块链与物联网融合理论架构

CECBC

区块链

ClickHouse常见集群部署架构

一粒

nosql 架构 Clickhouse

真香系列!大牛耗时一年最佳总结,让你的app体验更丝滑!建议收藏

欢喜学安卓

android 程序员 面试 移动开发

Hadoop 编程实战:HDFS API 编程样例

罗小龙

Java hadoop hdfs 编程

区块链2020年终盘点

CECBC

区块链

我从 HX 辞职了

看山

辞职 闲聊

(无聊预警)来啊一起冲浪啊 - 网络协议01

Max Zhang - 张亦弛

网络协议 基础知识 OSI七层协议

架构师训练营知识点整理

garlic

架构师训练营第 1 期

2021健康快乐

escray

2021

架构师 3 期 3 班 -week6- 总结

zbest

总结 week6

一周信创舆情观察(12.21~12.27)

统小信uos

2020中国低代码平台市场发展年度报告(深度分析)

J2PaaS低代码平台

软件 低代码 开发工具 SaaS/IaaS/PaaS 软件开发、

深入浅出Android!2021京东最新Android面试真题解析,震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

Vmware+Ubuntu 配置静态IP

千泷

ClickHouse数据导入

一粒

kafka Logstash Clickhouse

LeetCode题解:347. 前 K 个高频元素,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

零基础工程师绘图指南,半小时水平越级提升!

穿甲兵

架构 设计 软件工程 分层架构

DeFi中的关键——智能合约 | 白话区块链入门220

CECBC

区块链

极客大学架构师训练营 - 架构师技术图谱 - 大作业二

好吃不贵

架构师训练营第 1 期

前端组件化基础知识

三钻

大前端 组件化

牛笔了!难道Android真的凉了?Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

第十一周作业

Jack

关于食堂就餐卡系统设计

Geek_mewu4t

系统设计 食堂就餐卡

SSH 免密码/免用户名/免IP登录云服务器实践

穿甲兵

SSH 服务器

AEM公链APP系统开发|AEM公链软件开发

系统开发

架构师 3 期 3 班 -week6- 作业

zbest

作业 week6

wildfly 21的配置文件和资源管理

程序那些事

程序那些事 web服务器 应用配置 服务器部署

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