CocoaPods(0.39.0)でRealmが入れられなくて困った時の対処法

SwiftでRealmを使いたかったので、CocoaPods経由で入れようと思った。
Realmのドキュメントに書いてあるインストール方法に従い、

platform :ios, "9.0"
use_frameworks!
target 'SampleProject' do
    pod 'RealmSwift'
end

というPodfileを書いて pod install しようとしたら、エラーが出てコケた。

貼られたIssue発行用のMarkdown Template内のErrorはこんな感じ。

NoMethodError - undefined method `to_ary' for #<Pod::Specification name="Realm">
Did you mean?  to_query
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver/lazy_specification.rb:14:in `method_missing'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `flatten'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `block in resolve'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:63:in `tap'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:63:in `resolve'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer/analyzer.rb:539:in `block in resolve_dependencies'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/user_interface.rb:59:in `section'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer/analyzer.rb:537:in `resolve_dependencies'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer/analyzer.rb:70:in `analyze'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer.rb:213:in `analyze'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer.rb:136:in `block in resolve_dependencies'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/user_interface.rb:59:in `section'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer.rb:135:in `resolve_dependencies'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/installer.rb:105:in `install!'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/command/project.rb:71:in `run_install_with_update'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/command/project.rb:156:in `run'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/claide-0.9.1/lib/claide/command.rb:312:in `run'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/command.rb:47:in `run'
/Users/susemi99/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/bin/pod:44:in `<top (required)>'
/Users/susemi99/.rbenv/versions/2.3.0/bin/pod:23:in `load'
/Users/susemi99/.rbenv/versions/2.3.0/bin/pod:23:in `<main>'

…お、おう。

とりあえず貼られたURLに飛び、 同じようなことを言っている人がいるIssue を覗くと、要するにこういうことだとわかった。

  • Ruby 2.2だといけるけど、Ruby 2.3だとコケる
  • すでに修正した(2015/10/13)
  • masterブランチはすでに修正済みだが、stableな最新バージョンである0.39.0にはまだ取り込まれていない

なるほど。

ruby --version

してみたら、確かに2.3系を使っていた。
しかし、冒頭で貼った Realmのドキュメントに書いてあるインストール方法 のところでは、”N.B.: The CocoaPods 1.0.0 Release Candidate versions are not supported at this time. Please use the latest stable version.” と言われているので、stableでないCocoaPodsを使うわけにはいかない。

というわけで、rubyのバージョンを2.3から2.2に落とすことにした。rvmを使う。

まだインストールをしていない場合はインストール。

curl -sSL https://get.rvm.io | bash -s stable
source ~/.bash_profile
source ~/.rvm/scripts/rvm

そして、

rvm list known ruby

すると、

# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.8]
[ruby-]2.2[.4]
[ruby-]2.3[.0]
[ruby-]2.2-head
ruby-head

# for forks use: rvm install ruby-head-<name> --url https://github.com/github/ruby.git --branch 2.2

(他、長々と亜種が表示される。略。)

と出てきたので、ruby-2.2-headを使うことにする。

sudo rvm install ruby-2.2-head --default
rvm use 2.2-head
ruby --version

ruby 2.2.ほげ〜 が表示されたらうまくいっている。

pod install

成功。無事幸せになれました。


コメントする