お役立ち情報

Ruby on RailsでMySQLを使用する際の接続手順

mysqlのデジタルイメージ

Ruby on RailsとMySQLの組み合わせは、おそらくRubyでの開発環境でもっとも多いパターンでしょう。データベースをあまり使わない場合は初期設定のSQLiteになっているかもしれませんが、データベースを頻繁に使用するシステムではMySQLに設定しなおすことが多いかと思います。

そこでこのページでは、Ruby on RailsでMySQLを使用する際の接続手順について解説します。基本的にそれほど難しいポイントはないのですが、GUIだけでなくコマンドから設定しなければならない場面もあります。

ただしコマンドを正確に理解していなければ設定できないわけではなく、コピペで対応しても問題ありません。そのままコピペで設定できるように、実際のコードも載せておきます。

MySQLのインストールから指定

まず大前提として、Ruby on RailsとMySQLがインストールされている必要があります。Ruby on Railsはすでに用意されているものとして、MySQLは別でインストールが必要です。

Ruby on Railsと一緒にデフォルトでインストールされるデータベースはSQLiteなので、MySQLとは別物です。SQLiteが入っていれば設定の変更でMySQLに切り替えられると勘違いされることがあるようですが、SQLiteとMySQLはまったく別のソフトになります。

ただしMySQLのインストールは簡単で、公式サイトからフォームに従ってパッケージをダウンロードし、設定していくだけです。ユーザーやパスワードを設定すれば、ターミナルからデータベースを操作できるようになります。

Ruby on RailsからMySQLの指定

MySQLのインストールが完了したら、次にRuby on Rails側からデータベースの指定をSQLiteからMySQLに切り替えます。具体的には、コンソールから以下のコマンドを入力します。

rails new アプリケーション名 -d mysql
#or
rails new アプリケーション名 --database=mysql

要するに、Ruby on Railsで作成するこのアプリケーションではMySQLを使用します、という宣言コマンドです。上下どちらのコマンドでも良いので、コピペしてアプリケーション名の部分だけ書き換えて使用すると良いかと思います。

上記のコードを実行すると、configフォルダにdatabase.ymlというファイルが作られます。このファイルはRuby on RailsとMySQLの接続の詳細を設定するファイルです。具体的な項目は環境やユーザー名、パスワードなどで、これを開くと以下のようになっています。

development:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_development
     pool: 5
     username: root
     password:
     host: localhost

test:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_test
     pool: 5
     username: root
     password:
     host: localhost

production:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_production
     pool: 5
     username: root
     password:
     host: localhost

すでにSQLiteを使っているアプリケーションをMySQLに変える

現状すでにSQLiteを使用していて、後からMySQLに変えたいケースもあるかと思います。既存のデータベースと連動しているシステムを作る場合、後から作るシステムをMySQLをベースにするなら既存のデータベースも合わせて変更した方が利便性が高くなります。

後からMySQLに変更する方法もそれほど難しくはないのですが、最初からMySQLを選択するよりも多少コマンド入力が多いです。具体的には以下のようなコマンド入力を行います。

Gemfileの更新

Gemfileとは、Ruby on Railsで使用するライブラリやアプリ動作のためのインストール情報などが記述されたファイルです。更新のためのコマンド入力の流れは以下です。

アダプタの設定

gem ‘mysql2’

インストールの実行コマンド

$ bundle install

実行結果の確認

(省略)
Installing mysql2 0.4.8 with native extensions
(省略)

database.ymlの更新

database.ymlは上で説明した通りRuby on RailsとMySQLの接続設定の詳細を定義するファイルです。新規にMySQLを利用する場合だけでなく、SQLiteからMySQLに切り替える際にも設定が必要になります。

設定の詳細はプロジェクトにより異なりますが、以下のような画面から書き換えます。

development:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_development
     pool: 5
     username: root
     password:
     host: localhost

test:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_test
     pool: 5
     username: root
     password:
     host: localhost

production:
     adapter: mysql2
     encoding: utf8
     reconnect: false
     database: [アプリ名]_production
     pool: 5
     username: root
     password:
     host: localhost

ユーザー名やパスワードを設定する項目があるので、MySQLでの設定に合わせて書き換えます。ホストについても環境が合っていないとうまくいかない原因になります。データベース名についてはシステム的に紐づいているわけではないので、デフォルトのままや適当に付けても問題ありません。

データベース作成コマンドの実行

上記の流れでRuby on RailsとMySQLの接続設定ができたら、最後にデータベース作成のためのコマンドを実行します。具体的には以下のコマンドです。

$rails db:create
$rails db:migrate

このように記述すると、Ruby on Railsにデータベースが作成されます。

重要なポイントとしては、Ruby on Railsでは基本的にconfig/database.ymlファイルでデータベース接続の設定を一元管理しているということです。コマンドでデータベースの設定を変更したりすることがあるかもしれませんが、ほとんどの設定は上記のファイルに対して行っていると考えて間違いありません。

上記のことを理解したうえでコマンド入力等行っていけば、それほど難しい点はないかと思います。またコマンドの経験がなくても、おそらく直感的にわかるくらい簡単なコマンドばかりで操作は完了します。

上で紹介したものがほぼすべてですが、大枠はコピぺで良いですし、書き換える部分も難しくはありません。ぜひMySQLを導入してみることをおすすめします。

 

Ruby関連記事
1, Rubyフリーランスの仕事や単価、ruby on railsの在宅案件まで
2, Rubyとは?学習方法や将来性、perlやphp、Pythonの比較はどう?
3, [この記事] Ruby on RailsでMySQLを使用する際の接続手順
4, あるiOSアプリのエンジニアがRuby on Railsのプロジェクトに加わった話
5, 小学生でも数時間でアプリを作れたRuby on railsの入門書3選

キャリアカウンセリングのプロとして
あなたに合った案件をご案内します。

まずはお気軽にお問い合わせください!

イメージ