Help us understand the problem. What is going on with this article?

cococapodsの使い分けとGemとBundler

開発をしているとプロジェクトごとにcocoapodsの使ってるバージョンが違いました
cocoapodsって複数バージョン使えるんだっけと思って調べていたところ

CocoaPodsは、同一のマシン内に複数のバージョンを入れることができるようですが、「pod」コマンドで使われるバージョンは、最上位のバージョンのようです。

という一文をみつけましたが

他にも調べているとどうやらBundlerを使うとできるっぽい

でもbundlerとか雰囲気で使ってたしということで
CococaPodsのバージョンの使い分けとそれに関連してくるgem、Bundlerについて調べてみました

gemとは

多くのプログラミング言語と同様に、Ruby にも幅広いサードパーティのライブラリが提供されています。
それらのほとんどは “gem” という形式で公開されています。

qiitaも漁りました

今回はgemです。ローカルのRailsのアップデート時にGemfileとかいじってた時に、そういえばgemってなんだろ...、Railsのライブラリ管理だよな...?となって色々誤解していることが顕になったので調べてみました。

gemとは
gemとはrubyのライブラリのことです。まあだから結局railsのライブラリにもなるのだけれど、正しい認識は重要。というか「gemはrailsのライブラリ」とか言ってるとruby力がないのがバレる.....

gemとはrubyのライブラリのことらしいです

gem listを叩いてみました
このコマンドでローカルにインストールされているgemをみることができます

activesupport (4.2.10)
addressable (2.5.2)
atomos (0.1.2)
babosa (1.0.2)
badge (0.9.1)
bigdecimal (1.2.8)
bundler (1.16.4)
CFPropertyList (3.0.0, 2.2.8)
claide (1.0.2)
cocoapods (1.5.3, 1.5.0)
cocoapods-core (1.5.3, 1.5.0)
cocoapods-deintegrate (1.0.2)
cocoapods-downloader (1.2.1, 1.2.0)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)
colored (1.2)

bundlercocoapodsもありました

ということはcocoapodsもbundlerもライブラリのようですね

しかしgem listででてくるからgemはライブラリ管理という記述もいろんなところで見かけるっぽい

bundlerとは

bundlerはそれ自体もgem(= ライブラリ)で
"gemfile"と"gemfile.lock"に従って、gemを管理をするライブラリです。
(さっきのgem listコマンド叩いたときに出てきました)

cocoapodsのバージョンを使い分ける

bundlerでインストールすることでそのプロジェクト用のcocoapodsをインストールできるっぽい

1, gem install bundlerでbundler自体をインストール
2, プロジェクトファイル(.xcodeproj)と同じディレクトリに移動
2, bundle initgemfileを作成
3, 作成されたファイル内にgem "cocoapods", "1.7.5"を書く

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
gem "cocoapods", "1.7.5"

4, bundle install --path vendor/bundlでgemfileの設定をもとにgemをインストールします
* 「--path vendor/bundl」の指定がないと、プロジェクトと関係ない場所にインストールされてしまうので注意らしいです

podfile作成してpod installするまで

ちなみにこの後にpod installで指定ライブラリをインストールするけど
その際CocoaPodsのコマンドを使用するときは、先頭に「bundle exec」をつけてコマンドを叩く必要があるらしい
これはBundlerを使ってCocoaPodsをインストールしているかららしい
* bundle install --path vendor/bundlでpodfileも一緒に作成されるっぽい

参考

https://www.ruby-lang.org/ja/libraries/
https://qiita.com/kamohicokamo/items/ded4cad5be1778547640
https://qiita.com/3no3_tw/items/8c1e3e95c75edae1036d
https://qiita.com/BearsSoft/items/3ad8eebf04c80152bace

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away