Make sure that `gem install idn-ruby -v '0.1.0'` succeeds before bundling.
あー、あー。OSXなんすけど。別のアプリで試すか
@zundan 3 ヶ月ほど前のトゥートのリプで申し訳ないんですけど、
bundle install (gem install idn-ruby) が macOS でどうしてもできないんですけど、これって解決されてたりしますか?
@noraworld もうよく状況を覚えていなくて申し訳ないのですが、解決していないのは確かです。
たぶんこの時は何か別のことを確認するのにそのへんにworking copyがあったアプリをbundle installしてみたのだと思います。
解決するには、エラーメッセージからログの残っているファイルを辿って、gemのコンパイル時のエラーを眺めて、どんなライブラリが足りないかを確認して、そのライブラリを提供するパッケージをbrewなりでインストールすることになるんじゃないかな?と想像します。
@zundan idn-ruby には、LibIDN というライブラリが必要だと書かれていました
https://github.com/deepfryed/idn-ruby
そこで、brew から LibIDN をインストールしてみました
brew install libidn
しかし、インストールしてみても、gem install idn-ruby は失敗してしまいます。
エラーでは
"checking for -lidn... no
ERROR: could not find idn library!"
と書かれていましたが、lidn というのは調べても出てこないです…
Mac 用のマストドンの開発環境を作る記事では、当たり前のように bundle install と書かれていて、エラーについてのことは全く書かれていないので完全にお手上げ状態です…
@noraworld なるほど。手元では試してもいないので想像ですみませんが、brewでインストールしたlibidnが提供する共有ライブラリ(たぶんlibidn.数字.dylibというファイルとlibidn.数字.aというファイル)の場所を、gem(というかリンカ)が認識できていないのだと思います。共有ファイルは/usr/local/libにあると思うので、それを知らせてあげられると進みそうです。Linuxだとexport LD_LIBRARY_PATH=/usr/local/lib的なことをすればいいのですが、macosでの流儀は知りません。すみません。
@zundan gem install idn-ruby を実行するときに、--with-idn-lib というオプションをつけるとパスを指定できるらしいので、/usr/local/lib と指定してみましたが、ダメでした
/usr/local/lib の中身をのぞいてみたんですが、LibIDN に関するライブラリがここにあるのかどうかはよくわかりませんでした。
@zundan がんばってライブラリの場所を探していて、どうやら Homebrew でインストールした LibIDN のライブラリは、/usr/local/Cellar/libidn/1.33 にあることがわかりました
そこで、gem install idn-ruby -- --with-idn-dir=/usr/local/Cellar/libidn/1.33 として試してみたらインストールすることができました!
お手数おかけしてすみませんでした…