专栏首页DevOps持续交付一文搞清rake、Rakefile、gem、gemspec、bundler、bundle、Gemfile的关系

一文搞清rake、Rakefile、gem、gemspec、bundler、bundle、Gemfile的关系

概述

这几个都是Ruby语言中的概念。下面我分别介绍一下各个名词的含义,并将其与其他类似工具做比较,以便读者理解。

Ruby

Ruby是红宝石的意思,是编程语言的名字。Ruby语言的logo就是一颗红宝石。

Ruby是一门开源的动态编程语言,注重简洁和效率。其句法优雅,读起来自然,写起来舒适。

Ruby语言源文件的后缀是.rb

rake和Rakefile

rakeRuby语言的类make程序。可以在其中定义任务和源码依赖。

rake = r(uby’s m)ake

就像makeMakefile文件一样,rake有对应的Rakefile

它们都属于构建工具的范畴。

表格展示如下:

语言

构建工具名称

构建工具配置文件

C

Make

Makefile

Ruby

Rake

Rakefile

gem和gemspec

gem是宝石的意思。能够很容易想到跟Ruby红宝石同处一系。

gemRuby的包管理系统,命令是gem,包名后缀也是.gem,类似于rpm

不过rpm只能安装本地包,不能联网下载。联网下载需使用yumdnf

同样的,Debian系,包管理系统是dpkg,不能联网下载。联网下载需使用apt

gemspec文件,是gem的描述文件,包含gem相关的信息,如包名、版本、简介、描述、作者、主页等。

类似的,dpkg打包需要spec文件,deb打包需要control文件。

表格展示如下:

语言

包管理系统

包后缀

本地

联网

描述文件名

Ruby

gem

.gem

<package-name>.gemspec

Red Hat系

rpm

.rpm

SPECS/<package-name>.spec

Red Hat系

yum/dnf

.rpm

-

Debian系

dpkg

.deb

debian/control

Debian系

apt

.deb

-

这里要注意,gem对应的文件是gemspec。Gemfile和gem无关,它其实是bundler的配置文件名称。

bundler、bundle和Gemfile

bundler是Ruby应用的外部依赖管理工具。

bundle是另一个gem,是用来解决”把bundler误拼写称bundle”的问题,唯一功能就是安装bundler,使两者同意而不报错。

Gemfile文件描述执行相关Ruby应用需要的外部依赖gem,包含源、gem名称、gem版本等信息。

执行bundler install时,bundler会读取Gemfile文件并一次性安装所有依赖gem。

总结

rake是Ruby语言的构建工具,它的配置文件是Rakefile。

gem是Ruby语言的包管理工具,它的配置文件后缀是.gemspec。

bundler是Ruby语言的外部依赖管理工具,它有一个别名叫”bundle”,它的配置文件是Gemfile。

本文分享自微信公众号 - 左手编程右手文化(shanyshanb),作者:左手编程右手文化

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EasyNVR HLS 、RTMP网页直播方案前端完善:监听表单变动

    在网页前端的开发过程中时常遇到这样的需求,监听表单的状态。 对于表单的状态为非就是,表单内容发生变化、表单内容没有发生变化。

    EasyNVR
  • 【图说】工业物联网:新经济革命的引擎

    导读:工业物联网是物联网产业中一个重要的分支。工业与物联网技术的结合虽然目前并不为大众熟知,但它将会对全球工业带来颠覆性的改变。 工业物联网将在能源、交通运输(...

    钱塘数据
  • 聊聊artemis的ClientProducerCreditManager

    本文主要研究一下artemis的ClientProducerCreditManager

    codecraft
  • 看过来!2017年即将过去,这些科技大事影响着我们的生活

    图说:科技正悄然改变正人们的生活 来源/视觉中国(下同) 2017年的科技界,也是不平凡的一年。两颗中子星的“偶遇”撞开了天文学新纪元的大门,遗传学领域研究则是...

    企鹅号小编
  • js数组中一些实用的方法(forEach,map,filter,find)

    需求场景: 假若后端返回这么一个json数据格式,如下所示,我们需要拿到返回对象中的数组项,或者根据某些指定的条件,取特定的值,然后渲染到页面当中去,例如:拿n...

    itclanCoder
  • 使用SAP XIF Adapter发送IDoc数据

    In this blog, I will use File as external receiver.

    Jerry Wang
  • CDN+MEC风口来袭,落寞的老牌厂商能否乘风而起?

    随着万物互联,移动直播、短视频、AR及AI等新型互联网服务的兴起,流量迎来海量增长,对现有网络的承载能力带来了严峻的挑战,在5G和物联网时代,CDN作为“互联网...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券