Ruby on RailsでMySQLを使用・接続する際の手順と注意点

Rubyロゴ
以前、Cloud9というサービスを使ってRuby on Railsの開発環境構築手順をご紹介したブログを書きました。 Cloud9は、開...

以前、MacでRuby on Railsをインストール!開発環境構築手順を分かりやすく説明というブログを書いたことがあるのですが、内容の中でデータベースに関して特に細かく触れることはありませんでした。

Ruby on Railsでは、デフォルトのデータベースとしてSqlite3を使用しています。
しかし、いざ実用的なものを開発したい時は、データベースはやはりMySQLなどの著名なものを選択しますよね。

ということで、今回は、Ruby on RailsでMySQLをデフォルトのデータベースとして使用・接続する際の手順と注意点について、説明していきたいと思います!

ちなみに今回は、Ruby on Railsを使ったWebアプリを作成する時に、初めからデータベースをMySQLとして設定する場合の手順をご説明します!
また、Macでの接続・設定手順を説明していますので、あらかじめご承知おきください。

MacにMySQLのインストールを実施する

まずは、MacにMySQLのインストールを実施するところからです!

MacにMySQLをインストールするのに、今回はHomebrewを使用します。

以前、Cloud9というサービスを使ってRuby on Railsの開発環境構築手順をご紹介したブログを書きました。 Cloud9は、開...

MacでRuby on Railsをインストール!開発環境構築手順を分かりやすく説明という記事でもHomebrewそのもののインストール方法はご紹介していますので、Homebrewを入れていないという方は、是非参考にしてみてください!

Homebrewをインストールしたら、

brew install mysql

というコマンドをターミナルに打ち込むと、MySQLをインストールすることができます。
/usr/local/bin/フォルダをのぞいてみると、MySQLが入っているのがわかりますので、確認してみましょう!

Ruby on Railsアプリ作成時の設定について

cloud9でRuby on Railsの開発環境を設定するというブログ記事でも紹介したように、Ruby on Railsを使った新しいプロジェクトを作成するときは、


## DBはMySQLを設定する状態でrailsの新しいプロジェクトを作成
rails new arrown -d mysql


といったように、rails newコマンドで作成することができます。

この時、実はデータベースに関する設定も同時に行ってしまうことができるんです!

railsのプロジェクトを新しく作成する時は、「rails new プロジェクト名」コマンドを実行します。

この時、プロジェクト名の後にオプションのようなかたちとして「rails new プロジェクト名 -d mysql」と設定すると、デフォルトではmysqlを使用するという設定の元、railsプロジェクトを新しく作成することができます。

gem mysql2のインストール

しかーし!
先ほどのコマンドを打っただけで、MySQLが使えるようになった訳ではありません!

  • 「どのMySQLデータベースを使用するのか?」
  • 「どのテーブルを使用するのか?」

などがまだ設定されていないですよね。
引き続き、きちんとRuby on RailsのプロジェクトでMySQLを使用するための情報を設定していきます!

RubyからMySQLに接続するときには、色々なライブラリを使って接続を試みます。
最近はmysql2というgemがよく使われているようなので、今回のブログでもmysql2のgemを使って話を進めてみたいと思います!

gemfileにmysql2を追加指定

gemfileを開き、mysql2を追加指定します。
そして、bundle installコマンドを実行することで、mysql2を使用することができるようになります。

MySQLのユーザー作成をする

次に、MySQLのユーザー作成をします。
データベースとしてMySQLを使うわけですが、MySQLにログインするためのユーザーを作る必要があるわけなんですね!

mysql -u root -p

で、MySQLのユーザーを作成する上で、まずMySQLにログインをしなければいけないのです。

え? ユーザーまだ作っていないのにMySQLにログインなんてできるの!?」と思うかもしれませんが、ご安心ください!

MySQLにはデフォルトで「root」というユーザーが設定されていますので、このrootユーザーを使ってログインをするのが上記コマンドだと思ってください!

mysql

するとターミナルの行頭の表記が少し変わり「mysql>」となります。

GRANT ALL PRIVILEGES On *.* TO ユーザー名@localhost IDENTIFIED BY ‘パスワード’;

次に、ユーザーを作成するためのコマンドを入力します。
上記のコマンドが該当しますが、ユーザー名・パスワードにはそれぞれ自分の好きなものを入れてくださいね!

ユーザーがきちんと登録できた場合は「Query OK, 0 rows affected (0.00 sec)」という記述がターミナルに走ります。
ユーザーが本当にきちんと登録できているのか確認したい場合は、「select host,user from mysql.user;」というコマンドを打ってみましょう!

mysqlのユーザーが登録できている様子

僕はtatsuyaという名前のユーザー名を作ったのですが、上記のようにuserのところにtatsuyaという文字が書かれていれば、MySQLのユーザー登録がばっちりできたということになります!

ここまでできたら、quitと打ち込んで、mysqlから抜けましょう。

データベースを作成する

MySQL内にデータベースを作成

次に、データベースを作成していきます。

rails db:create

ここはシンプルに、「rails db:create」というコマンドをターミナルに打ち込みます。
コマンドの内容からして、何をするのか想像できると思うのですが、要するにデータベースを作成するコマンドです!

configフォルダ内のdatabase.ymlに、データベース名情報が記述されています。
実は先ほどのrails db:createコマンドを実行すると、基本的にはdatabase.ymlに書かれた名前のデータベースが作成されます!

僕の場合ですと「arrown_development」「arrown_test」などに該当しますね!

ターミナルでMySQLのデータベース一覧を表示する方法

ちなみに、MySQL内のデータベース一覧を表示する方法も紹介しておきます!

mysqlのデータベース一覧を表示

まずは「mysql -u ユーザー名 -p」などでmysqlにログインを試みます。
(上の方で使用していた、mysql -u root -p でもOKです!)

「Enter password?」とパスワードを聞かれますので、ここで先ほど設定したパスワードを入力します。

mysqlモード(?)になったら、SHOW DATABASESと入力すると、今MySQL内にあるデータベース一覧が表示されるようになります!

RailsアプリでMySQLの動作確認

ここまでできたら、本当にRuby on Railsのアプリケーションから先ほど作ったMySQLのデータベースにデータが登録できるのかを確認してみたいと思います!

scaffoldを使ってテスト用のページを作成

Ruby on Railsでは、scaffoldというサクッとCRUD機能を実装できる命令が用意されているので、scaffoldを使ってみます!
scaffoldについては、また別の機会にarrownでもブログ記事にしようと思いますので、取り急ぎ知りたい方は、上記の記事など参考にしてみてくださいね!

冒頭の方では、arrownという名前のrailsアプリを作成しましたので、ターミナルでcd arrownと打ち込み、arrownフォルダに移動します。
そして、

rails generate scaffold books title:string content:string

とターミナルに打ち込んでみます。
さらに続けて・・・

rails db:migrate

と打ち込んでみましょう!

すると、あら不思議! あっという間に、登録・更新・削除・表示機能がついたアプリケーションが実装されます。

ここでターミナルに「rails s」コマンドを打ち込んでみると、

rails sコマンドでサーバーを立ち上げる

上記のような表示が出て、サーバがPCの中で立ち上がります。
ここでGoogle Chromeなどのブラウザにhttp://localhost:3000/booksと打ち込んでみましょう。

railsのscaffoldで作成した簡単なアプリ

上記のような表示がされていれば、成功です!

scaffoldで作ったアプリで何か投稿してみる

先ほどscaffoldというものを使って作ったアプリは、タイトルと内容を入力するだけの簡易ブログみたいなものを想定しています。
なので、適当に何か投稿をしてみましょう!

新規bookを登録しましょう

先ほどアクセスしたhttp://localhost:3000/booksに表示されているNew Bookというリンクをクリックすると、

新規登録画面

新規内容登録画面に移ります。
なんでもいいので、Titleとcontentにそれぞれ何かを入力してみましょう!

入力したら、Create Bookボタンを押します。

テスト投稿成功!

無事、投稿ができたことが確認されました!

railsのテスト投稿ができたところ

“http://localhost:3000/books”のアドレス に再びアクセスしてみると、投稿一覧にも先ほど投稿されたテスト投稿の内容が表示されています!

sequel proを使って動作確認

ちゃんとテスト投稿が表示されているということは、データベースにきちんと登録もできているということになるわけなのですが、一応自分の目でデータベースをのぞいておきたいですよね!

そこで今回はSequel proというアプリを使って、Mac内のMySQLに接続し、先ほど行ったテスト投稿がデータベースに登録されているかを確認しましょう!

Sequel Proの公式サイトから、ぜひアプリをダウンロードしてみてくださいね!
ちなみに Sequel ProはMac専用アプリということなので、ご注意ください!

Sequel proでサーバの接続情報を入力

Sequel Proを開いてみましょう!

Sequel ProでMySQLに接続するときの画面

上記のような画面がでます。
とりあえずクイック接続を選択して、ホスト名・ユーザー名・パスワードあたりを入力して接続ボタンを押せばOKです!

ホスト名については標準のポート接続をしたい場合は127.0.0.1、ソケット接続をしたい場合はタブを切り替えた上でlocalhostを選択してください!
(今回はテスト投稿の確認が目的なので、正直どちらでもOKです)

Sequel Proでデータベースを選択し、テスト投稿の情報を確認する

うまく接続できたら、データベースを選択します。

Sequel Proでデータベースを選択

今回は、上記の画像にもあるように、開発用として作成したDBを選択するために、arrown_developmentのデータベースを選択します!

Sequel Proを使ってデータベースのbooksテーブルにテスト投稿のデータが入っているのが確認できた!

booksテーブルを選択すると、無事にデータベースの中にテスト投稿のデータが入っているのが確認できました!

まとめ

ということで、長くなりましたが今回はRuby on RailsのデータベースをMySQLに設定する方法と注意点について書かせていただきました!

一番最初にも書いたように、今回は最初からRuby on Railsで作るアプリのデータベースをMySQL設定する方法をご紹介しました。

実は、途中からMySQLにデータベースを変更することも可能ですので、その方法については、また別の機会にでもご紹介させていただきますね!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする