mariadb
RubyOnRails
MariaDB10

CentOS7 で Rails 5.1 + MariaDB 10.2 をインストール

RVMでRuby 2.4.4 をインストール

gpg --keyserver hkp://keys.gnupg.net --recv-keys \
  409B6B1796C275462A1703113804BB82D39DC0E3 \
  7D2BAF1CF37B13E2069D6956105BD0E739499BDB

でGPG鍵をインストールできるはずですが、GPGのバージョンの問題でできなかったので、以下のコマンドを実行

command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -

RVMをインストール。

\curl -sSL https://get.rvm.io | bash -s stable

続いて Ruby 2.4.4 をインストール。

rvm install ruby-2.4.4

念のためバージョンを確認。

ruby --version
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]

~/.gemrcでrdocをインストールしないようにします。

~/.gemrc
gem: --no-ri --no-rdoc

bundlerをインストール。

gem install bundler

MariaDB 10.2 をインストール

CentOS7 標準の MariaDB 5.5 がインストールされている場合は、まずアンインストールします。

yum -y remove mariadb-*

つぎに MariaDB Package Repository Setup and Usage に記載されているコマンドを実行、MariaDB のレポジトリファイルを作成します。

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

yumで MariaDB 10.2 をインストールします。

yum -y install MariaDB-server MariaDB-client MariaDB-devel

以下のrpmがインストールされます。

# rpm -qa|grep -i mariadb |sort
MariaDB-client-10.2.14-1.el7.centos.x86_64
MariaDB-common-10.2.14-1.el7.centos.x86_64
MariaDB-compat-10.2.14-1.el7.centos.x86_64
MariaDB-devel-10.2.14-1.el7.centos.x86_64
MariaDB-server-10.2.14-1.el7.centos.x86_64

Ruby on Rails 5.1 をインストール

以下のように Gemfile を作成、

Gemfile
source 'https://rubygems.org'

gem 'rails', '5.1.3'
gem 'mysql2'

bundle install を実行します。

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /usr/local/rvm/gems/ruby-2.4.4/extensions/x86_64-linux/2.4.0/mysql2-0.5.1/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.4.4/gems/mysql2-0.5.1 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.4.4/extensions/x86_64-linux/2.4.0/mysql2-0.5.1/gem_make.out

An error occurred while installing mysql2 (0.5.1), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.1'` succeeds before bundling.

In Gemfile:
  mysql2

というエラーでmysql2のビルドに失敗します。

yum -y install MariaDB-shared

で MariaDB-shared / MariaDB-devel をインストールすると解決しました。

ToDoアプリを作ってみる

以下のコマンドを実行、新規Railsアプリを作成します。

rails new todo
cd todo
rails generate scaffold tasks title:string content:text due:date

デフォルトだとデータベースにSQLite3を使うようになっているので、config/database.ymlのdevelopmentデータベース設定を以下のように修正します。

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: development
  pool: 5
  username: root
  password:
  host: localhost

Gemfileにgem 'mysql2'を追記、

gem 'mysql2'

bundle installを実行します。

データベースを作成、テーブルを作成し、Railsサーバを起動します。

rake db:create
rake db:migrate
rails s
=> Booting Puma
=> Rails 5.1.3 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.9.1 (ruby 2.4.1-p111), codename: Private Caller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

サーバの port 3000 にブラウザでアクセスして以下のようにタスク新規作成ができれば問題ないはずです。
ScreenShot_20170805105613.png