廃墟

本ブログは更新を終了しました。 技術的な記事のみ、有用性を鑑みて残しておきます。

CocoaPodsで undefined method `author=' for... といったエラーが出るときの対処方法

経緯とか

特に、Rubyを他の事にも使っていると発生しやすいのですが、最近ずっと、以下の様なエラーに悩まされていました。
RubyやBundlerに詳しい人からしてみたら当たり前のことだと思うんですが、軽く触るだけでメインがiOSエンジニアだったりするとひっかかるよなぁ…

Invalid `XXXX.podspec` file: undefined method `author=' for #. Updating CocoaPods might fix the issue.

なんだろうなーこれと思って、色々調べてたら、過去の議論が引っかかりました。

https://github.com/CocoaPods/CocoaPods/issues/816

どうやらActiveSupportのバージョンのせいでエラーが出ているようです。ただ、この問題は今のバージョンでは修正されています。

そういえば、ぼく、他の案件でRailsの少し昔のバージョンとか色々入れてたな―… 多分これが原因だよなー…

…ということで、全部bundlerでやればいいのだな、という結論になりました。

直し方

まず、Podfileと同一ディレクトリに以下のGemfileを置きます。

source 'https://rubygems.org'

gem 'cocoapods'

次に、直下で以下のコマンドを打ちます

$ bundle install --path .bundle

最後に、pod installするときにこのbundleを使わないといけないので、こうします

$ bundle exec pod install

これで上手く動くはずです。

尚、gitignoreには.bundleを追加した方が良いですね。 他の開発者がRubyを頻繁に使ってるとは限らないので、彼らにとっては"bundle exec"じゃ冗長になっちゃいます。