Ruby & rake

rake是Ruby语言的类make程序, rake = r(uby’s m)ake

语言 构建工具名称 构建工具配置文件
C Make Makefile
Ruby Rake Rakefile

Ruby & gem

Rudy是红宝石的意思,gem是宝石的意思。gem是Ruby的包管理系统,命令是gem,包后缀名也是.gem。gem对应的文件是gemspec,不是Gemfile,Gemfile和gem无关,Gemfile其实是bundle的配置文件名称。

语言 包管理系统 包后缀 本地 联网
Ruby gem .gem Y Y
Red Hat系 rpm .rpm Y N
Red Hat系 yum .rpm N Y
Debian系 dpkg .deb Y N
Debian系 apt .deb N Y

bundler & bundle & Gemfile

bundler是Ruby应用的外部依赖管理工具,bundle是另一个gem,是用来解决”把bundler误拼写称bundle”的问题,唯一功能就是安装bundler,使两者同意而不报错。Gemfile文件描述执行相关Ruby应用需要的外部依赖gem,包含源、gem名称、gem版本等信息。执行bundler install时,bundler会读取Gemfile文件并一次性安装所有依赖gem。

  1. rake是Ruby语言的构建工具,它的配置文件是Rakefile。
  2. gem是Ruby语言的包管理工具,它的配置文件后缀是.gemspec。
  3. bundler是Ruby语言的外部依赖管理工具,它有一个别名叫”bundle”,它的配置文件是Gemfile。

使用国内镜像

gem

gem sources -l

gem sources --add https://mirrors.tuna.tsinghua.edu.cn/rubygems/ --remove https://rubygems.org/

bundler

配置文件位置为C:\Users\CNMIZHU7.bundle\config

bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems

bundle config --delete 'mirror.https://rubygems.org/'

---
BUNDLE_MIRROR__HTTPS://RUBYGEMS__ORG/: "https://mirrors.tuna.tsinghua.edu.cn/rubygems"

版本

我们可以使用 >、<、>=、<= 告诉 gem 安装程序不要使用与比较不兼容的版本。~> 是另一种安装特定 gem 版本的语法,代表 gem 使用 Semantic Versioning,此模式很有用,它指示安装程序不要安装带有中断更改的版本。

gem install rails -v "~> 6.0.0"
该命令等同于 gem install rails -v ">= 6.0.0, < 7.0.0"

依赖包下载位置

C:\Users\CNMIZHU7\.local\share\gem\ruby\3.3.0\gems
C:\Program Files\Ruby33-x64\lib\ruby\gems\3.3.0\gems        
C:\Ruby27-x64\lib\ruby\gems\2.7.0\gems

Gemfile.lock

Gemfile.lock是一个记录了当前项目所使用的Gem包及其版本的文件。它的作用是确保在不同环境中使用相同的Gem版本,以保证项目的稳定性和一致性。通常情况下,Gemfile.lock应该包含在.gitignore中,不应该被纳入版本控制。这是因为Gemfile.lock是根据Gemfile自动生成的,而Gemfile是需要纳入版本控制的。将Gemfile.lock排除在版本控制之外,可以避免不同开发者之间的冲突,并且可以确保在不同环境中使用相同的Gem版本。当项目中的Gem包发生变化时,开发者可以通过运行”bundle install”命令来更新Gemfile.lock文件。然后,将Gemfile.lock文件提交到版本控制,以便其他开发者可以获得相同的Gem版本。