mac で fast_trie がエラーでインストールできない

1 min read読了の目安(約900字

先日 mac で bundle install を実行したところ以下のようなエラーが出ました

Building native extensions.  This could take a while...
ERROR:  Error installing fast_trie:
	ERROR: Failed to build gem native extension.

ちゃんと確認した感じ fast_trie というパッケージをインストールする際に発生しているようです。ちゃんとエラーを確認すると…

compiling trie.c
trie.c:84:8: error: implicit declaration of function 'trie_has_key' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    if(trie_has_key(trie, (TrieChar*)RSTRING_PTR(key)))

のようなエラーが出ています。
これは C99 という ISO で定められたC言語の規格に違反している際に出るエラーです。これは構文エラーではないのでビルドすることはできます。
以前は出てなかったのですが、xcodeをアップデートした際にコンパイラがアップデートしてこのようなエラーが出るようになったと思います。

本当はこういったエラーがないバージョンに上げる必要がありますが、すぐに対応が厳し場合もあると思います。
そういった場合は一旦このエラーを無視してビルドすることもできます。
--with-cflags=-Wno-error=implicit-function-declaration というオプションを付かけることで無視することができます。

$ bundle config --local build.fast_tire --with-cflags=-Wno-error=implicit-function-declaration
$ bundle install

同様のものが thin という gem でも発生したのた同様に対応することが可能です。