写点什么

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

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

关注

评论

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

机器学习算法(五):基于企鹅数据集的决策树分类预测

汀丶人工智能

数据挖掘 机器学习 决策树

压缩解压工具:Keka中文版

真大的脸盆

Mac Mac 软件 压缩工具 解压缩软件 解压软件

如何编写测试用例?

测吧(北京)科技有限公司

测试

面试官:如何保证接口幂等性?一口气说了9种方法!

程序员大彬

Java 接口幂等

面试高频问题之C++编译过程

小万哥

c++ 程序员 后端 编译 开发

软件测试/测试开发丨app自动化之如何参数化用例

测试人

软件测试 自动化测试 测试开发

别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”

Alter

百度 大模型 ChatGPT 文心一言

往往排查很久的问题,最后发现都非常简单。。。

艾小仙

Java kafka spring

pdf编辑工具:PDF Expert 中文激活版

真大的脸盆

Mac PDF Mac 软件 PDF编辑 pdf编辑工具

解决 Font '宋体' is not available to the JVM

源字节1号

微信小程序 开源 软件开发

【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系机制(1)

码界西柚

Java JVM 3月月更

华为P系列,雪夜梅花开,似是故人来

脑极体

华为

mybatis xml文件热加载实现

越长大越悲伤

mybatis springboot java

零代码零距离,明道云开放日北京站圆满结束

明道云

设计模式之美––依赖反转

GalaxyCreater

设计模式

关于GPT-4的产品化狂想

脑极体

AI

隐式等待、显示等待和强制等待

测吧(北京)科技有限公司

测试

Handler消息传递机制浅析

芯动大师

Activity Handler runOnUiThread

前缀和算法练习集

timerring

前缀和

QQ截图图片不够清晰解决方法

源字节1号

微信小程序 开源 软件开发

关于chatGPT是否会干掉程序员的一次专业评估

深清秋

ChatGPT 程序员发展

Kotlin 学习笔记(二)—— 数据类、密闭类、循环写法以及常用集合操作符

修之竹

android kotlin

照片肖像美容软件:ON1 Portrait AI 2023.1 激活版

真大的脸盆

Mac Mac 软件 照片处理工具 肖像美容软件

adb的常用命令

测吧(北京)科技有限公司

测试

赠票 | 在北京,见证边缘的力量

俞凡

华为云ECS/HECS:中小企业上云第一步

IT科技苏辞

为什么大家都喜欢“人天”作为估算单位?

Bruce Talk

Scrum 敏捷开发 Agile

【Redis源码分析】Server启动过程

零点999

redis Redis 协议 Redis 核心技术与实战 Redis 数据结构 redis 底层原理

架构蓝图--软件架构的“4+1”视图模型

涛哥 数字产品和业务架构

软件架构 模型

软件测试/测试开发丨app自动化测试之Andriod WebView如何测试

测试人

软件测试 自动化测试 测试开发

Spring中PropertyPlaceholderConfigurer替换占位符的问题

石臻臻的杂货铺

spring-boot

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