一文搞清rake、Rakefile、gem、gemspec、bundler、bundle、Gemfile的關係

  • 2020 年 3 月 10 日
  • 筆記

概述

這幾個都是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。