Ruby

こんにちは、しきゆらです。

今回は、タイトル通りmysql2のインストールに失敗したのをなんとかする方法をメモしておきます。

 

環境としては、

  • Mac
  • Ruby2.6.0
  • Rails5.2.2
  • MySQL8.0.13

という状態。

 

普通にbundle installすると、エラーが。

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/user_name/path/to/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/usr/local/Ruby/bin/ruby -I /usr/local/Ruby/lib/ruby/2.6.0 -r ./siteconf20181231-27997-6j2jh2.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=/usr/local/Ruby/bin/$(RUBY_BASE_NAME)
/usr/local/Ruby/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 /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:552:in `try_link0'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:570:in `try_link'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:782:in `try_func'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:1069:in `block in have_func'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:959:in `block in checking_for'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:361:in `block (2 levels) in postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:331:in `open'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:361:in `block in postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:331:in `open'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:357:in `postpone'
    from /usr/local/Ruby/lib/ruby/2.6.0/mkmf.rb:958:in `checking_for'
    from /usr/local/Ruby/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/user_name/path/to/vendor/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/user_name/path/to/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to
/Users/user_name/path/to/vendor/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

mysql2のインストールに失敗したようです。

調べてみると、以下のような解決方法がいくつも提示されていました。

 

以下のコードを打ち込む。

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

RailsにMySQLを導入したらかなりハマった件について – 大学生Webエンジニアの記録

 

調べてみると、どうやらbundlerにはgemをビルドするときにフラグやオプションを渡すことができる機能を持っているようです。

上記コードは、mysql2のビルドオプションを渡すコードのようです。

Build Options

You can use bundle config to give Bundler the flags to pass to the gem installer every time bundler tries to install a particular gem.

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

Bundler: bundle config – Bundler Docs

 

似たコードが書かれています。

オプションを追加し、再びbundle install。

・・・エラー直らず。

 

途方に暮れていると、こんな情報が。

ログ見たら –with-cppflags オプションに対応してないとのこと。
ldflagsのみで実行してみる

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

mysqlのbundle installに失敗する – Qiita

 

なんと、cppflagsはいらないようです。

実際、上記の設定後にbundle install すると問題なくインストールできました。

$ bundle install
...
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Fetching pry 0.12.2
...

 

 

先人たちの体験談には頭が上がりません。

感謝です。

 

 

今回はここまで。

おわり

Electron,JavaScript

こんにちは、しきゆらです。

今回は、electron-builderというものを触ってみます。

 

私は、よく使うサイトをElectronアプリとして書き出して使っています。

ビルドはelectron-packagerというものを使い、時々Electronをビルドしていました。

先日久々にビルドしていると、エラーが出て動かなくなっていました。

正直、NodeやElectronについてはにわか程度の知識しかなく、更新情報なども追えているわけではありませんでした。

調べてみると、electron-builderというものもあるということで、今回はこっちの方を使ってみました。

 

簡単ではありますが、記録として残しておきます。

といっても、参考サイトをほぼそのままやっただけ。

参考サイトは以下です。

electron-builderでElectronアプリのビルド

https://qiita.com/nanairo24/items/73356574b0dc65c0e617

 

日記

こんにちは、しきゆらです。
今回は、BluetoothヘッドホンCOWIN E7を買ったので紹介します。

COWIN E7 ワイヤレス Bluetooth ヘッドホン 密閉型 高音質 内蔵マイク NFC搭載 ケーブル着脱式 30時間再生 ハンズフリー通話可能 iphone X PC Mac などに対応 ヘッドフォン

・・・今年の頭に、別のヘッドホンを買い紹介しました。
しかし、頭の部分にヒビが入ったことや、イヤーパッドの皮がはがれ始めたため、ひどくなる前に新しいものを購入した感じです。
1年ほどで買い換えるのとても大変・・・。
どう保存するのが正解なんだろうか。

それでは、見てみましょう。

Mac,Ruby

こんにちは、しきゆらです。

毎年、この時期はRubyの最新版リリースが熱いですよね。

ということで、早速環境を作っていきましょう。


Rubyは、Ruby3x3という目標のもと、高速化のための改良が続けられています。

今回は、高速化のための変更としてJITコンパイラが導入されました。

オプションとして–jitをつけると、JITを使って動作するようです。

詳しい更新内容については、以下を参照して下さい。

高速化以外の変更でよく使いそうなものとしては、「終端なしRange」の追加でしょうかね。

あとは、何気にCSVファイルの扱いも高速になっているようです。

さて、それでは実際にコンパイルしてみて、どのくらい早くなったのかを、簡単なベンチマークを取りながらみてみましょう。

Windows,日記

こんにちは、しきゆらです。

久しぶりの投稿ですね。気がつけば、11月が終わっていました。

今回は、サブノートPCのWindows機をHDDからSSDに換装したのでメモしておきます。

 

大学入学に伴って買ったWindows機。

今ではすっかり家でネットサーフィンや音楽再生、ゲーム機等、我が家の雑用機となっています。

単純な雑用ではほぼ不満はないが、ゲームやソフトのインストールなどをしようとすると、途端に不満が。

そう、遅いのである。

まぁ、すでに6年ほど前のPCですからねぇ。

HDDとしては、もう使い倒したと言ってもいいくらいではないでしょうか。

 

ということで、今回はHDDをSSDに換装してみます。

ちなみに、Windows機はこれ。Corei7を積んでいる方です。

 

今回購入したSSDはこちら。キングストンの 120GBです。

 

 

では、換装していきます。