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

  • 0
    Like
  • 0
    Comment

    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
    

    参考リンク