写点什么

Rip:一个全新的 Ruby 包管理系统

  • 2009-06-21
  • 本文字数:1295 字

    阅读完需:约 4 分钟

Rip 是一个 GitHub 团队开发的全新的 Ruby 包管理系统。它能够管理不同的安装源,例如目录、文件,Git 版本库以及 RubyGems 等。

另外一个有趣的新特性是虚拟环境(“ripenvs”)。Ripenvs 能够用于无冲突地安装和管理一个包的多个版本。Ripenvs 能够使得依赖库的升级更加安全,方法很简单,只需通过创建一个新的实验环境然后在这个环境中升级即可,如果中途发生任何意外,你也能够回到之前稳定的环境。

但是为什么是一个全新的包管理器?RubyGems 怎么了?我们采访了 Rip 开发者之一,Chris Wanstrath:

RubyGems 没有任何什么问题。我很喜欢 RubyGems。看起来人们认为 Rip 是“修正”或者是补充 RubyGems。但是事实并不是这样。 Rip 的目的是使得包的安装、使用和管理更加快捷方便。它的目标人群是安装者而不是分发者;是那些能够通过命令准确知道应用程序所使用的库版本的用户,而不是那些需要猜测库版本的用户;是那些希望在安装包的时候希望知道发生了依赖冲突的用户,而不是对此漠不关心的用户。

Rip 是为那些希望能够主动知道运行 X 的版本的用户编写的。这也是在帮助你调试一个问题。希望能够保证所有计算机都运行着相同版本的相同库的用户可以使用这个工具。还有那些希望看到升级某个库的影响如何的用户也可以使用这个工具。

Rip 不是寻找其他系统的缺点而是优点。

仅仅使用 RubyGems 是否会更加容易一些呢?

Rip 和 RubyGems 是两个迥异的工具: - Rip 和你的 $LOAD_PATH 相关,而 RubyGems 则是重载了‘require’。

  • Rip 关注于 $RUBYLIB 而 RubyGems 需要一个‘require “rubygems”’。
  • Rip 能够管理多个环境,每个环境的库的版本是独立的,而 RubyGems 只能管理一个单独的环境,每个库可能有多个版本。
  • Rip 能够(理论上)安装任何包类型,而 RubyGems 只能安装.gem 文件。

所以,它们真的是不同的项目,关注于不同的东西。我不相信它将会在工作的时候(或者部分),完全改变 RubyGems 的目标、核心理念和基础代码。这两个系统能够和谐共处。

虚拟环境貌似是管理为不同版本 Ruby 编写的包的完美解决方案,例如 JRuby。

当然,这也是 Rip 优点所在——也许你需要为不同版本的 Ruby 发布不同版本的 ripenvs(可安装的 Rip 虚拟环境)。一个是为 1.9,一个是为 1.8,一个是为 JRuby——使用 Rip 对你和你的客户来说都更加容易。 这就是 Rip 工作的方式。不需要任何特别的特性。

Rip 现在仅仅是发布了 0.0.1 版,你们接下来打算做些什么呢?

我们还没有开始升级甚至是深入了解 ripenvs 的能力。能够使用一个命令(例如 ‘rip freeze | gist ’)来共享开发环境,合并开发环境而不用担心版本冲突。使用 ripenvs 部署你的应用程序仅仅是我们的目标之一。 我们也希望能够复制 git 的‘reflog‘思想,所以你能够轻易地检视或者撤销任何你在 ripenv 中所作的更改。你不需要担心任何数据或者设置的丢失。

我们也有一些比较大的想法,比如能够帮助你根据名字而不是 url 找到包。

当然,支持 hg、svn 和 bzr 是计划之内的事情。你需要安装它们。

我们也会在 Rip 1.0 中支持 Windows。

更多 Rip 的信息,包括一个简短的教程请参见 Rip website

查看英文原文: Rip: A New Package Management System for Ruby

2009-06-21 23:221630
用户头像

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

关注

评论

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

新思科技推出Intelligent Orchestration解决方案 优化DevOps管道的速度和效率

InfoQ_434670063458

新思科技

GitHub上收录400余篇任正非的讲话稿

不脱发的程序猿

GitHub 开源 程序人生 任正非讲话

模块五总结

竹林七贤

全球案例 | 一家财富500强公司利用 Jira 和 Jira Align 将万人级团队的生产力提高了 30%

Atlassian

管理 DevOps 敏捷 Jira 协同办公

Python3 Note __slots__

awen

Python slots

从零开始学习3D可视化之获取对象

ThingJS数字孪生引擎

物联网 可视化 大屏可视化 3D可视化 数字孪生

百度智能云亮相CCBN2021,云智一体智媒产业智能化解决方案受关注

百度大脑

云智一体 CCBN

一篇文章带你看懂计算机系统监控与可观测性发展史(干货)

观测云

云计算 可观测性

【LeetCode】包含min函数的栈Java题解

Albert

算法 LeetCode 6月日更

BoCloud博云微服务平台3.0正式发布:让微服务转型路径更清晰

BoCloud博云

微服务

计算机视觉常用图像数据集标记平台

不脱发的程序猿

人工智能 计算机视觉 图像处理 图像数据集标记平台

☕️【Java技术之旅】深入学习JIT编译器实现机制(原理篇)

洛神灬殇

Java 编译器 JIT 6月日更

个推CTO谈数据中台(上):从要求、方法论到应用实践

个推

大数据 数据中台 数字化转型 数据智能

环信MQTT消息云正式发布,覆盖4大核心场景

环信

mqtt

《原则》(一)

Changing Lin

6月日更

在一架天车中,透视5G时代的钢铁智变

脑极体

六一限定,致每一个追光者

白洞计划

Android studio 在外置硬盘运行项目报.lock 的错误

三爻

flutter android Mac Android Studio

DMCC在迪拜正式启动加密中心

InfoQ_434670063458

DMCC 加密中心 自由区

mPaaS 月度小报 | 应用上线前都应该检查哪些指标?CodeHub#5回顾:小程序容器加持下的技术架构“提质增效”

蚂蚁集团移动开发平台 mPaaS

小程序 移动开发 mPaaS

聚焦大企业创新与创投生态,2021 DEMO WORLD 世界创新峰会圆满成功!

创业邦

bzz矿机分币系统开发,BZZ矿机节点APP搭建

Python3 Note 函数注解

awen

Python Function 函数注解

Python3 Note 对象初始化

awen

Python 生命周期 对象初始化

仅需1秒!快速查看海淀全区情况,一句话让“智慧屏”全搞定

百度大脑

智能

☕️【Java 技术之旅】360度全方位的教你认识网络IO模型

洛神灬殇

JVM Java、 编译器原理 6月日更

工业智能(汽车)联合创新实验室发布 力促汽车工业融通发展

如何理解梯度下降算法Gradient Descent algorithm John 易筋 ARTS 打卡 Week 49

John(易筋)

ARTS 打卡计划

“图发展”与“保安全”:大数据今后怎么玩?

CECBC

六一儿童节,看我用ModelArts让8090梦回童年

华为云开发者联盟

AI 美食 童年 modelarts 六一

webRTC探索音视频的录制的实现

云小梦

JavaScript WebRTC 浏览器API

Rip:一个全新的Ruby包管理系统_Ruby_Mirko Stocker_InfoQ精选文章