Railsのセットアップでハマり、無駄に時間がかかってしまうとモチベーションもダダ下がりです。
(少なくともぼくがそうです…)
そこでこの記事では、エラーとその対処法を紹介します。
もしかしたら今困っている最中のエラーも紹介しているかもしれません。
Bundle install実行時にMysqlインストールでエラー
“`sh
Fetching mysql2 0.4.10
Installing mysql2 0.4.10 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/mysql2-0.4.10/ext/mysql2
/Users/yuhiisk/.rbenv/versions/2.5.0/bin/ruby -r
./siteconf20180327-38437-1omr160.rb extconf.rb
–with-opt-lib=/usr/local/opt/openssl/lib
–with-opt-include=-I/usr/local/opt/openssl/include –local
checking for rb_absint_size()… yes
checking for rb_absint_singlebit_p()… yes
checking for ruby/thread.h… yes
checking for rb_thread_call_without_gvl() in ruby/thread.h… yes
checking for rb_thread_blocking_region()… no
checking for rb_wait_for_single_fd()… yes
checking for rb_hash_dup()… yes
checking for rb_intern3()… yes
checking for rb_big_cmp()… yes
checking for mysql_query() in -lmysqlclient… no
—–
mysql client is missing. You may need to ‘brew install mysql’ or ‘port install
mysql’, and try again.
—–
*** 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.
Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include=${opt-dir}/include
–with-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/Users/yuhiisk/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME)
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
To see why this extension failed to compile, please check the mkmf.log which can
be found here:
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/mysql2-0.4.10/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/mysql2-0.4.10 for
inspection.
Results logged to
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/mysql2-0.4.10/gem_make.out
An error occurred while installing mysql2 (0.4.10), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v ‘0.4.10’` succeeds before bundling.
In Gemfile:
mysql2
“`
mysqlがインストールされていないときに出るエラーなので、mysqlをインストールしましょう。
“`sh
$ brew install mysql
“`
rmagickインストール時にエラー
“`sh
Installing rmagick 2.16.0 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rmagick-2.16.0/ext/RMagick
/Users/yuhiisk/.rbenv/versions/2.5.0/bin/ruby -r
./siteconf20180327-39028-1asircf.rb extconf.rb
checking for clang… yes
checking for Magick-config… no
checking for pkg-config… yes
Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc’
to the PKG_CONFIG_PATH environment variable
No package ‘MagickCore’ found
checking for outdated ImageMagick version (<= 6.4.9)… *** 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.
Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/Users/yuhiisk/.rbenv/versions/2.5.0/bin/$(RUBY_BASE_NAME)
To see why this extension failed to compile, please check the mkmf.log which can
be found here:
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/rmagick-2.16.0/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/rmagick-2.16.0 for
inspection.
Results logged to
/Users/yuhiisk/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/rmagick-2.16.0/gem_make.out
An error occurred while installing rmagick (2.16.0), and Bundler cannot
continue.
Make sure that `gem install rmagick -v ‘2.16.0’` succeeds before bundling.
In Gemfile:
rmagick
“`
rmagick(gem)をインストールするには、別途ImageMagickが必要です。
また、Rmagick v2.16.0は ImageMagick v7(記事執筆時の最新版) に対応していないので、v6をbrewで入れる必要があります。
“`sh
$ brew install imagemagick@6
“`
そして `.bash_rc` や `.bash_profile` などにPATHを追加します。
“`bash
export PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/pkgconfig
“`
参考: https://qiita.com/niwasawa/items/1144f20a9f2de4b76977
ローカルサーバー起動後にMysqlエラー
“`sh
Mysql2::Error (Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)):
“`
この場合、mysqlサーバーは動いているでしょうか。
事前にmysqlサーバーを起動しなければいけません。
“`sh
$ mysql.server start
“`
データベースがないエラー
“`sh
Mysql2::Error: Unknown database ‘****’
“`
途中から参加するプロジェクトだったら、データベースの準備を行いましょう。
“`sh
$ rake db:create
$ rake db:migrate
“`
mysqlの場合はmigrateをするだけではダメで、はじめにデータベースを作成します。
参考: railsでデータベース作成&マイグレート(MySQL)
Webpackerでエラー
“`sh
Webpacker::Manifest::MissingEntryError in hogehoge
Showing /Users/yuhiisk/Work/sites/smout/app/views/layouts/application.html.slim where line #10 raised:
Webpacker can’t find application.js in /Users/yuhiisk/Work/sites/smout/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker’s config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
“`
該当部分が以下の場合。
“`erb
= javascript_pack_tag ‘application’
“`
まず `yarn` で必要なライブラリをインストールしましょう。
“`sh
$ bin/yarn
“`
その後、`webpack` でJavaScriptをコンパイルを行います。
“`sh
$ bin/webpack
“`
もしくはJS配信用のdevサーバーを起動します。(自動でwatch&コンパイルされる)
“`sh
$ bin/webpack-dev-server
“`