【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

统一观测|借助 Prometheus 监控 ClickHouse 数据库

阿里巴巴云原生

阿里云 云原生 Prometheus Clickhouse

面向金融科技方向选手!一级学会背书,AI选股与可视分析大赛来啦

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

覆巢之下(1)

于哲

文心一言 VS 讯飞星火 VS chatgpt (69)-- 算法导论6.5 8题

福大大架构师每日一题

福大大架构师每日一题

开放原子开源基金会理事长孙文龙一行赴山东大学考察交流

开放原子开源基金会

开源 开放原子开源基金会

运维让我优化SpringBoot启动速度,我是这么干的!

高端章鱼哥

运维 Spring Boot 后端

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

股市老人

Python超实用!批量重命名文件/文件夹,只需1行代码

程序员晚枫

Python 文件管理 自动化办公

2023年7月文章一览

codists

编程人生

2023模式识别课程师资培训会重磅招募

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

拜托,别在agent中依赖fastjson了

夏奇

Java Agent 类加载 架构设计 Fastjson

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

BlockChain先知

【我与openGauss的故事系列】奇思妙想——通过Go语言自制安装openGauss二进制程序(二)

daydayup

京东云正式加入openGauss社区,共筑数据库科技服务供应链

daydayup

敏捷产品路线图管理实例,产品路线图工具

顿顿顿

Scrum 敏捷开发管理 产品路线图工具

Sprint Boot学习路线3

小万哥

Java spring 后端 springboot SpringCloud

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

西柚子

如何在Windows上将iOS应用上传到App Store

Ansible自动化部署安装openGauss 3.1.0 企业版

daydayup

openGauss 3.1.0 版本gs_stack功能解密

daydayup

PoseiSwap:首个基于模块化设施构建的订单簿 DEX

EOSdreamer111

文心大模型企业应用私享会·上海站:共话大模型前沿技术与产业应用创新

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

openGauss的高效数据压缩算法

daydayup

openGauss企业级开源数据库荣获2022年度中国计算机学会(CCF)科技进步奖特等奖

daydayup

大模型真的会“好事多模”吗?

脑极体

大模型

RocketMQ 在业务消息场景的优势详解

阿里巴巴云原生

阿里云 RocketMQ 云原生

Last Week in Milvus

Zilliz

非结构化数据 开源社区 Milvus Zilliz

【我与openGauss的故事系列】奇思妙想——通过Go语言自制安装openGauss二进制程序(一)

daydayup

DBMind索引推荐功能在民生银行的生产实践

daydayup

openGauss-graph 0.1.0版本正式发布

daydayup

开放原子开源基金会TOC(技术监督委员会)第七十七次全体会议

开放原子开源基金会

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