岁岁年,碎碎念

RubyGems三两事

2022.04.10     285

前言

RubyGems 是 Ruby 的一个包管理器。类似于 Ubuntu 的 apt-get,CentOS 的 yum,Python 的 pip,iOS 的 Cocoapods。方便 Rubyists 管理软件包(gem),分享可复用的功能,为应用、库的开发提供坚实的巨人肩膀。

Gem

Gem 一般都有 version、name 和 platform。

gem help platform

Gems 内部组成一般分为以下三部分:

  • Code (including tests and supporting utilities)
  • Documentation
  • gemspec

示例 Gem cocoapods-search-1.0.0 代码组织结构

图片

lib 包含 gem 的源码。

test 或者 spec 包含开发者测试的代码或者测试框架。

Rakefile 通常为 rake 程序自动化测试、生成代码、执行任务。

bin 包含可执行文件,在 gem 安装时加载到 PATH 中。

文档通常包含 README 和代码内联说明,在 gem 安装时自动生成,一般 为 RDoc 文档和 YARD 文档。

gemspec 包含 gem 的信息。

图片

Gem 命令集

gem environment


➜  ~ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.8
  - RUBY VERSION: 2.6.5 (2019-10-01 patchlevel 114) [x86_64-darwin19]
[...]

gem search

➜  ~ gem search ^rails
*** REMOTE GEMS ***
rails (4.0.0)
rails-3-settings (0.1.1)
[...]

gem install 安装

➜  ~ gem install cocoapods-clean
Fetching cocoapods-clean-0.0.1.gem
Successfully installed cocoapods-clean-0.0.1
Parsing documentation for cocoapods-clean-0.0.1
Installing ri documentation for cocoapods-clean-0.0.1
Done installing documentation for cocoapods-clean after 0 seconds
1 gem installed

gem uninstall 卸载

➜  ~ gem uninstall cocoapods-clean
Successfully uninstalled cocoapods-clean-0.0.1

gem list


➜  ~ gem list
*** LOCAL GEMS ***
actioncable (6.0.3.2)
actionmailbox (6.0.3.2)
actionmailer (6.0.3.2)
actionpack (6.0.3.2)
[...]

➜  ~ gem list --local
➜  ~ gem list --remote

gem fetch (下载 gem 但不安装)和 gem unpack (取出 .gem 内容)

➜  ~ gem fetch cocoapods-clean
Fetching cocoapods-clean-0.0.1.gem
Downloaded cocoapods-clean-0.0.1
➜  ~
➜  ~ gem unpack cocoapods-clean-0.0.1.gem
Unpacked gem: '/Users/gekang/cocoapods-clean-0.0.1'
➜  ~
➜  ~ more cocoapods-clean-0.0.1/README.md
# cocoapods-clean

This command will simply remove Podfile.lock, Pods/ and *.xcworkspace from the current project. Which I happen to do a lot.

## Installation

    $ gem install cocoapods-clean

## Usage

    $ pod clean

gem sources gem 源增删查

➜  ~ gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.com
https://rubygems.org

➜  ~ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

gem which 查找 gem 目录

➜  ~ gem which cocoapods
/Users/glek/.rvm/gems/ruby-2.6.5/gems/cocoapods-1.5.3/lib/cocoapods.rb