読者です 読者をやめる 読者になる 読者になる

CocoaPodsで `pod install` したら NoMethodError が出て泣きそうになった

swift

最近、Swift を勉強していて、ライブラリを使いたくなったので CocoaPods を使ってみました。

最初に解決方法を書いておく

0.39.0 じゃなくて、 1.0.0.beta.2 を使いましょう。

$ gem install cocoapods -v 1.0.0.beta.2 

cocoapods のインストール

公式ページの INSTALL の手順に従って、 gem install cocoapods をしました。
インストールされた gem のバージョンは 0.39.0でした。

ライブラリのインストール

Alamofire/Alamofire の README を読みながらPodfile を作成し、 pod install を実行!

そして、エラーが発生!

### Error

\```
NoMethodError - undefined method `to_ary' for #<Pod::Specification name="Alamofire">
Did you mean?  to_query
/Users/sinsoku/.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/sinsoku/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:64:in `flatten'
/Users/sinsoku/.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/sinsoku/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:63:in `tap'
/Users/sinsoku/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/cocoapods-0.39.0/lib/cocoapods/resolver.rb:63:in `resolve'
\```

Swift 初心者なので、泣きそうになった。

Issue

NoMethodError - undefined method `to_ary' for Pod EAIntroView · Issue #4391 · CocoaPods/CocoaPods · GitHub と同じエラーで、しかも最後のコメントが「Same for ruby 2.3.0(2 days ago)」で本当に泣きそうだった。

beta版を試す

rubygems に 1.0.0.beta.2 があったので、ダメ元でアップデートしてみたら、あっさり解決。


Rubyエンジニアだったので rubygems の見方や gem のバージョン指定の方法を知っていたので、わりと早く解決できた。
CocoaPods のソースコードを読むことにならなくてよかった。