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

Travis CI での can't modify frozen String による bundle install エラー

Travis CI でビルドエラーの起きている Gem があって見てみたらこのようなエラーが起きていた。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    can't modify frozen String

Gem files will remain installed in
/home/travis/.rvm/gems/ruby-2.4.0/gems/rainbow-2.2.1 for inspection.
Results logged to
/home/travis/.rvm/gems/ruby-2.4.0/extensions/x86_64-linux/2.4.0/rainbow-2.2.1/gem_make.out

An error occurred while installing rainbow (2.2.1), and Bundler cannot
continue.
Make sure that `gem install rainbow -v '2.2.1'` succeeds before bundling.

以下の sickill/rainbow の ISSUE に pocke さんが書かれているように、.travis.yml の before_installgem update --system を指定することで解決する。

Bundler 0.14 breaks 2.2.1 build · Issue #48 · sickill/rainbow · GitHub

rainbow に依存している Gem でこのようなビルドエラーが起きていたら、いまならかなりの確度でこれが原因だと思う。