AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

自建个性化自动报价系统,应对多变报价模式

明道云

中台建设利器-SPI插件机制

Man

中台 插件化

【愚公系列】2022年07月 Java教学课程 05-关键字

愚公搬代码

7月月更

@Conditional条件装配

急需上岸的小谢

7月月更

想通讯?谈钱多俗,谈ProtoBuf

怀瑾握瑜的嘉与嘉

protobuf 7月月更

mysql进阶(四)聊聊mysql中的事务锁机制

No Silver Bullet

MySQL 7月月更

【漫步刷题路】- 逆序字符串II

芒果酱

7月月更

把项目打包成docker镜像,并发布到腾讯云?DockerHub!

为自己带盐

Dockerhub 7月月更 dotnetcore

曾经辉煌一世的流媒体协议RTMP是什么样的?它能完全被取代吗?一文带您走进RTMP的世界

wljslmz

RTMP 7月月更 流媒体协议

Serverless模板重磅上线!多场景覆盖、小时级快速集成

最新动态

数据库与开源的未来

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

数据库每日一题---第24天:格式化部门表

知心宝贝

数据库 算法 前端 后端 7月月更

因果学习将开启下一代AI浪潮?九章云极DataCanvas正式发布YLearn因果学习开源项目

九章云极DataCanvas

人工智能 GitHub 开源项目 因果学习 YLearn

Linux Lab 会议或直播安排与记录

贾献华

7月月更

极限实验室上新啦,期待已久的 INFINI Console 最新的 0.3 版本正式发布!

极限实验室

elasticsearch security console infini alerting

Qt | 控件之QCheckBox

YOLO.

qt 7月月更

String 实现模糊查询

小肉球

qt 7月月更

三级分类的数据表设计和构造API数据

宁在春

spring-boot 树形选择器 7月月更 菜单管理

【MySql项目实战优化】通过执行计划分析追加索引

安逸的咸鱼

MySQL 实战案例 7月月更

用 Flutter 来一颗跳动的心

岛上码农

flutter ios 前端 安卓开发 7月月更

【LeetCode】前缀和后缀搜索Java题解

Albert

LeetCode 7月月更

数据湖基本架构

五分钟学大数据

数据湖 7月月更

Block的底层实现

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

JVM架构解析

沃德

Java 程序员 7月月更

【刷题记录】12. 整数转罗马数字

WangNing

7月月更

解决问题的最佳实践路径

老张

解决问题 思考实践

第1章:初识数据库与MySQL----MySQL安装

乌龟哥哥

7月月更

查找——二叉排序树(二)

乔乔

7月月更

【古月21讲】ROS入门系列(3)——客户端Client、服务器Server的编程实现+自定义服务数据编程实现

秃头小苏

ROS 7月月更

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

汪子熙

JavaScript SAP SAP UI5 ui5 7月月更

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