前提
ポートフォリオ作成のため、現在自作アプリを実装しております。
現在、本番環境での自動デプロイを実装するため、参考記事を確認していた所、DB環境がMySQLに設定されていることが前提の記事が多いと感じました。
そのため、以前はローカルでsqlite使用、本番でmysql使用と分けていたものを全ての環境でmysqlを使えるように設定したく実装を進めています。
環境
ruby 2.7.2
rails 6.1
macOS
エラー内容
色んなことを試したため、かなり長くなっておりますがお力いただければ幸いです。
hana_nav_app+[master] % bundle Fetching gem metadata from https://rubygems.org/............ ・ ・ Fetching mysql2 0.5.3 ・ ・ Using sass-rails 6.0.0 Installing mysql2 0.5.3 with native extensions Using devise-i18n 1.10.0 Using rails 6.1.4.1 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/ext/mysql2 /Users/taddy/.rbenv/versions/2.7.2/bin/ruby -I /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210921-50046-8t4gxa.rb extconf.rb --with-cppflags\=-I/usr/local/opt/openssl@1.1/include checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes *** 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/taddy/.rbenv/versions/2.7.2/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-mysqlclient-dir --without-mysqlclient-dir --with-mysqlclient-include --without-mysqlclient-include=${mysqlclient-dir}/include --with-mysqlclient-lib --without-mysqlclient-lib=${mysqlclient-dir}/lib --with-mysqlclientlib --without-mysqlclientlib /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `block in find_library': undefined method `split' for nil:NilClass (NoMethodError) from /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `collect' from /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `find_library' from extconf.rb:87:in `<main>' To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/mysql2-0.5.3/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3 for inspection. Results logged to /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/mysql2-0.5.3/gem_make.out An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2
解決したいこと
mysql2をインストールさせたいです。
試したこと
mysql@5.7を使用したいため、以前入れていたデータを全て削除しました。
brew remove mysql brew cleanup sudo rm -rf /usr/local/Cellar/mysql* sudo rm -rf /usr/local/bin/mysql* sudo rm -rf /usr/local/var/mysql* sudo rm -rf /usr/local/etc/my.cnf sudo rm -rf /usr/local/share/mysql* sudo rm -rf /usr/local/opt/mysql* sudo rm -rf /etc/my.cnf
次にbrew install mysql@5.7
でインストールを行い、mysqlのパスを通しました。
下記コードが現在の状況です。
export PATH="~/.rbenv/shims:/usr/local/bin:$PATH" eval "$(rbenv init -)" export PATH="/usr/local/opt/openssl@1.1/bin:$PATH" export PATH="$HOME/.rbenv/bin:$PATH" export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
バージョンを確認、mysqlコマンドを使用できることを確認
~ % mysql --version mysql Ver 14.14 Distrib 5.7.35, for osx10.16 (x86_64) using EditLine wrapper
gemを変更後、bundleインストール実行し、このときはエラーなく成功。mysqlサーバも起動しました。
Gemfile # gem 'sqlite3', '~> 1.4' gem 'mysql2', '~> 0.5.3' ~ % mysql.server start Starting MySQL SUCCESS! ~ % 2021-09-20T11:43:31.6NZ mysqld_safe A mysqld process already exists
DBの定義ファイルを変更
default: &default adapter: mysql2 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root timeout: 5000 development: <<: *default database: hana_nav_app_development test: <<: *default database: hana_nav_app_test production: <<: *default database: hana_nav_app_production
DB作成時でエラーが発生しました。
hana_nav_app+[master] % bundle exec rails db:create rails aborted! LoadError: dlopen(/Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib Referenced from: /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle Reason: image not found - /Users/taddy/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle /Users/taddy/rails_projects/hana_nav_app/config/application.rb:7:in `<main>' /Users/taddy/rails_projects/hana_nav_app/Rakefile:4:in `<main>' bin/rails:5:in `<main>' (See full trace by running task with --trace)
ググるとシンボリックリンクの問題とのことでした。
% bundle doctor 実行結果 Files exist in the Bundler home that are not readable/writable by the current user. These ・ 文字数制限のため、省略 ・ * mysql2: /usr/lib/libSystem.B.dylib * mysql2: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib
The following gems are missing OS dependencies:
以下に記述のあるgemをアンインストールしろとのことなので、まず最初にmysql2を削除しました。
hana_nav_app+[master] % bundle exec gem uninstall mysql2 Successfully uninstalled mysql2-0.5.3
無事アンインストールできたので再度確認した所、bundleインストールしてとのことなので実行。
hana_nav_app+[master] % bundle doctor The following gems are missing * mysql2 (0.5.3) Install missing gems with `bundle install`
実行後のエラー文が「エラー内容」になります。
この後、gem install mysql2 -v '0.5.3'
も試したのですが駄目でした。
詳しい方がいましたらアドバイスいただけると幸いです。
何卒よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。