Web Marina

日々の業務や勉強などで得た知識をアウトプットしていきます。

【Rails6】macOS Catalinaでそもそもbundle installがコケる。

Railsのロゴ

こんにちは、マリンです。

今回はRails6です。いずれはあげなきゃいかんから...

と思い今回勉強がてら一つアプリを作ってみよう!

ってはじめたところ、まず最初のbundle installでコケたので書きます。

ちなみに今回の原因はmacOS Catalinaのようでした。

Railsは6なのにOSは上げんのかい!って言わないで...)


環境




状況

最初に書きましたが、勉強用にRails6でアプリを作ろうとしたところ、

$ budle init
$ bundle install

ここでまずコケましたという状況です。

エラー

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

current directory:
/Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/gems/racc-1.5.2/ext/racc/cparse
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20210115-42245-hi0x1e.rb extconf.rb
checking for rb_ary_subseq()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
.
.
.
To see why this extension failed to compile, please check the mkmf.log which can be found
here:

/Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/racc-1.5.2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
/Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/gems/racc-1.5.2 for inspection.
Results logged to
/Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/racc-1.5.2/gem_make.out

An error occurred while installing racc (1.5.2), and Bundler cannot continue.
Make sure that `gem install racc -v '1.5.2' --source 'https://rubygems.org/'` succeeds
before bundling.

まずは素直にgem install racc -v '1.5.2' --source 'https://rubygems.org/'をやりました。

下の方に書いてあったので。

インストールはできましたので再びbundle installしたところ、

全く同じエラーが出てPCぶん投げようかと思いました。


解決方法

ログ見るの大事です!

イムリーに昨日youtubeで「ググる前にエラーとかログ見ろよ!!」って怒られまして。

(でもここまでに無駄なググりを小一時間続けてましたが。。。)

で、お恥ずかしながら初めてログを見ました。

ログを見る

先ほどのエラーで言うと真ん中らへんのこの部分です。

To see why this extension failed to compile, please check the mkmf.log which can be found
here:

/Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/racc-1.5.2/mkmf.log

ここでもなんと「ログ見ろよ!!」って怒られてるんですね ^ ^;)

よくみると度々怒られてます。


ということで見てみます。

$view /Users/username/Study/Rails/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-19/2.6.0/racc-1.5.2/mkmf.log

In file included from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error:
      'ruby/config.h' file not found
#include "ruby/config.h"

すみません、中身はメモり忘れてググった時に出てきたやつお借りしてます。

でも重要なfatal error: 'ruby/config.h' file not foundが同じなので許して!

つまるところ、ruby/config.hファイルというのがないのがいけないそうですね。

ここでmacOS Catalinaさんの出番です。


もともとMojaveの時に起こっていたエラーのようですが、

Catalinaさんでも起こってしまうようです。

ruby - macOS Mojave 'ruby / config.h'ファイルが見つかりません

こちらではまずXcodeをインストールし直している様です。


fatal error: 'ruby/config.h' file not found エラーの対応 - Qiita

また、こちらの記事でもCommand line Toolsを入れるとあり、

もしかしてXcodeのバージョンか?と思い確認してみました。

しかしXcodeのバージョンは最新になっていたので違うかな?

と思い、最初の記事の推奨回答にあるやつを試しました。


$  echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
$ source ~/.bash_profile

きちんと適用させて(よく忘れるので)、、、いざ!!


$ bundle install
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 13.0.3
Using concurrent-ruby 1.1.7
Using i18n 1.8.7
Using minitest 5.14.3
Using tzinfo 2.0.4
Using zeitwerk 2.4.2
Using activesupport 6.1.1
Using builder 3.2.4
.
.
.
Fetching sprockets-rails 3.2.2
Installing sprockets-rails 3.2.2
Fetching rails 6.1.1
Installing rails 6.1.1
Bundle complete! 1 Gemfile dependency, 43 gems now installed.
Bundled gems are installed into `./vendor/bundle`

からの!!


$ rails new AppName -d mysql
      create  
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in /Users/marin/Study/Rails/Zukan/.git/
      create  package.json
      create  app
      .
      .
      .
      remove  config/initializers/new_framework_defaults_5_2.rb
         run  bundle install
.
.
.
Using turbolinks-source 5.2.0
Using turbolinks 5.2.1
Using uglifier 4.2.0
Using web-console 3.7.0
Bundle complete! 18 Gemfile dependencies, 79 gems now installed.

ぬぁ〜〜〜!

いつもはコケるMySQLまでスルスルいったーーー!

以上です。


まとめ

今回のことで、本当にエラーやログをしっかり確認することの大切さを学びました。

今まではなんとなく「英語だしな〜」「見てもどうせわかんないしな〜」

と言い訳して避けていましたが、

「翻訳あるんだから英語苦手は言い訳にならん!!」

とこれまたyoutubeの先生に怒られまして。。。(昨日)


でも実際見てみたところ、

内容は的確で、かつ思っていた様な難解な書き方ではなく

「ここか!!」

とすぐわかるようになっていました。本当親切!

エラーなんとなく読んだつもりで

見当違いのとこググるのは本当に時間の無駄!

今回大変勉強になりました。

皆さん、ログ見ましょう!!


今回参考にさせて頂いた記事はこちらです。

python5.com

github.com

ありがとうございました!