cocoapodsを複数バージョン管理する

#cocoapods管理方法
cocoapodsの管理方法は大抵以下の3つのどれかの手順を踏むかと思いますが、今回は1.の方法を書いていきたいと思います。

1.HomeBrew, rbenv, Bundler, Cocoapodsを使用する
2.Homebrew, Cocoapodsを使用する
3.Cocoapodsを使用する

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409860/43ab0280-2b80-38b2-28f7-a2aeff8d3c15.jpeg"><img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409860/cabdf11c-22c5-4de8-568b-6555dbc7c441.jpeg"><img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409860/615bb05c-0b8c-0528-e6a0-810eb1be16eb.jpeg">


# 用語紹介

### homebrew
OS X 向けのパッケージ管理ツールのこと。
rbenvやgitなどを管理する。

### rbenv
複数のRubyのバージョン管理を行う。
Rubyの管理・切り替えができる。

### bundler
依存関係にあるgemのインストールやバージョン管理を行う。
Rubyのプラグインを特定のディレクトリに入れる。
gemのローカル管理ができる。

### gem 
Rubyのパッケージ(ライブラリ)を管理してくれる。
cocoapodsなどを管理する。

### cocoapods
Rubyのgemの一つ。
プロジェクトの依存関係を管理するツール。

#導入手順
それぞれの導入手順を解説していきます。

## Homebrew
こちらがHomebrewの公式サイトで、インストール方法やドキュメントが確認することができます。

https://brew.sh/index_ja

### Homebrew をインストール
　1. HomeBrew をインストールしていない方は下記のコードを実行して、 Homebrew をインストールしてください。

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

2.`brew -v`や`brew --version`を実行し、バージョン確認ができたら成功です。

```:実行結果
Homebrew バージョン名 　//Homebrew 3.3.3など
```

##rbenv
こちらがrbenvのGithubです。

https://github.com/rbenv/rbenv

###rbenvインストール
1. Homebrew から rbenv をインストール

```
brew install rbenv
```

2.シェルに rbenv を設定する

```
rbenv init
```

3.ターミナルウィンドウを閉じて新しいウィンドウを開き、変更を有効にします。

4.rbenv-doctor スクリプトを使って rbenv が正しく設定されていることを確認します。

```
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
```

これで完成です。rbenvのインストールにはruby-buildが含まれているので、これでrbenv installを使って他のRubyバージョンをインストールする準備が整いました。

##Rubyバージョンのインストール
1.最新の安定版をリストアップします。
インストールしたいRubyバージョンが決まっている方はこの処理を省略して大丈夫です。

```
rbenv install -l
```

2.リストされたRubyバージョンのどれかをインストールします。

```
rbenv install バージョン番号　 　//rbenv install 3.0.3など
```

## Rubyのバージョンを変更する

Rubyのバージョンと global or local を設定していきます。

globalとは、Macに標準搭載されているRubyのことでシステム全体で適用されます。
localとは、設定したディレクトリ以下でのみ適用されます。なので、プロジェクトごとにRubyのバージョンを管理できます。

1.まずは現在インストールされているRubyのバージョンを確認します。

```
rbenv versions
```

このような一覧画面が表示されます。

```:一覧画面
$ rbenv versions
  1.8.7-p352
  1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
  jruby-1.7.1
  rbx-1.2.4
  ree-1.8.7-2011.03
```

2.今回はlocalを使用します。上記のバージョン番号一覧の中からバージョン番号を選び実行します。
これによりカレントディレクトリでは指定されたバージョン番号のRubyの使用されます。

globalを使用した場合はシステム全体で指定されたRubyが使用されます。（localで設定されたディレクトリを除く）

:::note warn
 Homebrew や rbenv は一度インストールされるとシステム全体に適応されますが、ここから先は local でのみ適応させることもできるので、違うプロジェクトでも導入する場合ここから先を参照してください。
:::

```
rbenv local(global) バージョン番号
```

3.localを使用した場合は以下のコマンドの実行し、カレントディレクトリに`.ruby-version`が存在する場合は成功です。
globalの場合はホームディレクトリに存在すると思います。

```
ls -a
```

##Bundler
現在セットされている Ruby で bundler をインストールしていきます。

 Bundler の Github、公式ドキュメントはこちら。

https://github.com/rubygems/bundler

https://bundler.io/

##Bundlerをインストール
1.RubyのRuby gems（gemのこと）を使用して、bundlerをインストールします。
バージョン番号は[こちら](https://qiita.com/tbskgm/items/e2f9edc0f991eee22d9d)を参考にしてください。
今回は例題として'~> 2.1'を指定したいと思います。

```
gem install bundler -v '~> 2.1'
```

下記のようなエラーが出る場合は、[こちらの記事](https://qiita.com/nishina555/items/63ebd4a508a09c481150)を参照してください。
現在のシェルを確認する方法は[こちら](https://qiita.com/k3ntar0/items/eb8cdbd8eba9da388def)です。

```:エラー内容
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
```

2.gemfileを作成します。

```
bundle init
```

3.gemfile を編集し、 cocoapods を追加します。
※`# gem "rails"`はコメントアウトしてあるので合ってもなくても変わらないです。

```
vi gemfile
```

今回は例題として、`'~> 1.10'`のバージョン指定を行いたいと思います。

```
gem 'cococapods', '~> 1.10'
```

gemfileはこのようになると思います。

```:gemfile全体
# frozen_string_literal: true
source “https://rubygems.org”
git_source(:github) { |repo_name| “https://github.com/#{repo_name}” }

gem 'cocoapods' , '~> 1.10'
```

4.bundleをインストールします。

```
bundle install
```

ここで以下のエラーにハマりましたので、一応書いておきます。

```:エラー内容
There was an error while trying to write to User/ユーザー名/アプリ名/.bundle/cache/.../versions.
It is likely that you need to grant write permissions for that path.
```
キャッシュが残っていることが原因ぽかったので、`ホームディレクトリ/.bundle/cache　`を一度削除して、bundleをインストールし直したら解決しました。

### CocoaPodsをインストール
1.podfileを作成

```
bundle exec pod init
```

2.podfileを編集し、ライブラリを追加します。

```
vi podfile
```

3.インストールしたいライブラリを記述していきます。
ライブラリのバージョン番号の指定方法は[こちら](https://qiita.com/tbskgm/items/e2f9edc0f991eee22d9d)を参考にしてください。
今回は例題としてAlamofireの`'~> 5.4'`バージョンをインストールしたいと思います。

```
pod 'Alamofire', '~> 5.4'
```

全体はこのようになります。

```:podfile全体
# Uncomment the next line to define a global platform for your project
# platform :ios, ‘9.0’
target ‘CoordinatorTest’ do
 # Comment the next line if you don’t want to use dynamic frameworks
 use_frameworks!
 # Pods for CoordinatorTest
 pod 'Alamofire', '~> 5.4' // ここ追加
end
```

４.podをインストールして終了です。

```
bundle exec pod install
```

インストールが完了すると、下記のような緑の文字列が表示されます。
これで pod のインストールが完了です。
※インストールするライブラリの数により数字は変わります。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409860/5091c799-ea29-f994-8298-020ff9cbe9dc.png)