Edited at

bundler で cocoapods そのもののバージョン管理をする

More than 1 year has passed since last update.

iOS開発で各種プラグインを管理するために、cocoapodsを利用していると思いますが

cocoapods自体のバージョンが変わってしまうとPodsファイルの挙動も変わってしまうので

できるだけプロジェクトと一緒に管理できたほうがメリットが多いです。

そこでcocoapodsをみんな同じ状態でつかえるように

cocoapodsのバージョン管理に関してまとめました。


rbenvとbundlerをインストール

まずは rbenvbundler をインストールします。

cocoapods は rubyのgemと呼ばれるものの1つのため

rubyのバージョン管理・切り替えが行える rbenv

gemのローカル管理ができる bundler をインストールします。

こちらに関しては下記のページにまとまっていますので

そちらを見ながらbundlerのインストールまで

進めていただければと思います。

MacにHomeBrew,rbenv,bundlerをインストールする - Qiita


NOTE:

今回 rbenv を推奨しているのは、Rubyのバージョンを固定するためなので

RVM やほかのものでバージョン固定していただければ他の方法でも問題ありません。



bundlerでcocoapodsのセットアップ


bundlerのインストール確認

bundlerが入っているかを確かめます。

ターミナルで以下のコマンドを打ってください。

bundlerが入っていれば、バージョンとともに表示されます。


ターミナルでbundlerが入っているかの確認

$ gem list | grep 'bundler'

bundler (1.14.6)

何も表示されなかったらgemインストールが完了していないので

今一度bundlerインストールの手順を確認してみてください。


Gemfileのセットアップ

bundlerの設定ファイルを作ります。

今作っているアプリのプロジェクトルートまで移動しコマンドを叩きます。


ターミナルで当該ディレクトリに移動して設定ファイル生成

# iOSアプリのプロジェクトのルートディレクトリが~/project/ios/ の場合

$ cd ~/project/ios/
$ bundler init

上記実行後、新しく Gemfile ができていればOKです。

中身を開くと以下のようになっています。


Gemfile

# frozen_string_literal: true

source "https://rubygems.org"

# gem "rails"


このファイルを元にインストールするgemを決定します。

今回は例として1.2.1 で固定したい場合の記述を

例示として記載します。


Gemfile

# frozen_string_literal: true

source "https://rubygems.org"

gem 'cocoapods' , '1.2.1'


これでインストール準備は完了です。


cocoapodsを使えるようにする

bundler では指定した場所にプラグインのファイルを配置できるので、明示的に配置します。

わかりやすいディレクトリならどこでも問題ありませんが

今回はメジャーな vendor/bundle を指定します。


ターミナルでcocoapodsのインストール

$ bundle install --path vendor/bundle


このコマンドを実行すると

実際に指定したバージョンの cocoapods を落としてきます。

インストールが完了したら、実際に使えるかやってみます。


ターミナルでcocoapodsのバージョン確認

$ bundle exec pod --version

1.2.1


実際にインストールする

以下のコマンドで実行します。


ターミナルでcocoapodsインストール実行

$ bundle exec pod install


なお、アップデートのときは以下


ターミナルでアップデート実行

$ bundle exec pod update



その後のバージョン管理

このあとは Gemfile を一緒にバージョン管理しておけば

どの cocoapods のバージョンでインストールしたかが一目瞭然になるので

cocoapods のバージョンが違ってうまくいかない!』ということが減ると思います。


(おまけ).gitignoreの追加

bundlerで入れるファイルは

バージョン管理の対象にしなくてもいいので

bundle install --path で指定したパスを追記しておきます。

今回の例だと vendor/bundle なので以下のように記述を追記


.gitignore

vendor/bundle



参考リンク