OS: Mojave 10.14.2
Ruby v 2.6.0
Rails v 2.5.2
Mysql 8 Server (installed standalone, not through homebrew, and tested through phpmyadmin)
In my Gemfile, I have:
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
I did:
bundle config build.mysql2 --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
bundle install --path .bundle
And I am receiving the following error message:
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/test_guy/Dropbox/Development/Rails/TestAppMac/.bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/Users/test_guy/.rbenv/versions/2.6.0/bin/ruby -I /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0 -r ./siteconf20190128-82406-1b5c8qc.rb extconf.rb --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
checking for rb_absint_size()... *** 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/test_guy/.rbenv/versions/2.6.0/bin/$(RUBY_BASE_NAME)
/Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:467:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:552:in `try_link0'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:570:in `try_link'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:782:in `try_func'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:1069:in `block in have_func'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:959:in `block in checking_for'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:361:in `block (2 levels) in postpone'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:331:in `open'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:361:in `block in postpone'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:331:in `open'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:357:in `postpone'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:958:in `checking_for'
from /Users/test_guy/.rbenv/versions/2.6.0/lib/ruby/2.6.0/mkmf.rb:1068:in `have_func'
from extconf.rb:25:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/test_guy/Dropbox/Development/Rails/TestAppMac/.bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /Users/test_guy/Dropbox/Development/Rails/TestAppMac/.bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to /Users/test_guy/Dropbox/Development/Rails/TestAppMac/.bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0-static/mysql2-0.5.2/gem_make.out
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
mysql2
Any ideas?
2
Answers
If your MySQL is installed and running then run this command
After that try to
This should fix your problem
Make sure you have the command line development tools
Make sure openssl is installed on Mac via Homebrew.
Install mysql2 gem with the options.
ref: Install mysql2 on MacOS Mojave