どうも、りーずです。
Windows10環境でのRuby on RailsでMySQLを使うときに、うまく動かない事がありました。
これはメモしておかないと忘れてしまうので、記事にしてメモしておきます。
>Rubyがある「bin」フォルダに「libmysql.dll」を貼り付けます。
これだわ。
—-
『gem mysql2をインストール時にエラー「You’ve installed the binary version of mysql2.」が発生した場合』https://t.co/oA6gTeAAAK— りーず Leez(そーめる) (@so_meru) April 29, 2021
上のツイートが今回の記事の伝えたいことのすべてです。「libmysql.dll」というファイルを使っているRubyの「bin」フォルダに入れましょう。
ちなみに今回のキッカケはHerokuのStackをアップグレードする時に起きたことです。
HeokuのStackをheroku-16からheroku-20にしようとしてHerokuのアップグレードボタンを押したんだけど、反映デプロイしようとしたらRubyのバージョンが古いと言われて、Ruby2.7.3をインストールしたらrailsがローカルのMySQL(MariaDB)に繋げられなくなった。
mysql2の設定どうするんだったっけな…— りーず Leez(そーめる) (@so_meru) April 29, 2021
なんかのファイルをRubyのフォルダに入れるはず的な感じで記憶してるんだけど、その設定を忘れてしまった。あれはブログに書いておくべきだった(@_@。
— りーず Leez(そーめる) (@so_meru) April 29, 2021
Herokuは、Linuxのバージョンを上げるためにStackを上げることがあります。
これにより、Rubyのバージョンが古いとデプロイが出来なくなることがあり、僕もRuby2.5を使っていたので、上げる必要がありました。
しかし、MySQL(mysql2というgem)を使うときに「何かのファイルをRuby本体に入れないと動かない」ということがあったのです。
この「何かのファイル」というのが今回紹介する「libmysql.dll」というファイルです。
Ruby2.6.7を入れる>PathをRuby2.6.7に設定
Gemfile.lockを削除>GemfileのRubyを2.6.7に設定
bundle update実行
Rails本体が何故か入らなかったので
gem install rails 5.2.1としたら5.2.5が入った。
あとはRubyがある「bin」フォルダに「libmysql.dll」を貼り付けて、mysql起動してrails sで動いた。— りーず Leez(そーめる) (@so_meru) April 29, 2021
Rubyがある「bin」フォルダに「libmysql.dll」を貼り付ける、というところが今回のポイントです。
ファイルは
http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.11-win32.zip
上記のリンクから直接ダウンロードします。
かなり原始的な方法ですが、これがすべてです。
「gem mysql2をインストール時にエラー「You’ve installed the binary version of mysql2.」が発生した場合」
https://mebee.info/2020/07/22/post-14994/
以上、何かの参考になれば幸いです。