railsのインストールが終わったので、今回は、先日インストールしたMariaDBをrailsと連携させる。
参考)Ruby on Rails 5.0 でMariaDBを扱う
https://qiita.com/MariMurotani/items/a34878916fcabfc3c638
やること
1.ソフトウェアのインストール
2.MariDB接続設定
3.MariaDBの確認
1.ソフトウェアのインストール
必要ソフトウェア
MariaDB ⇒インストール済み
gemのmysql2
gemのmysql2のインストール
Gemfileに追記
# cd アプリフォルダ # vim Gemfile ・ # MariaDB gem 'mysql2' ・
2行追加(#MariaDBはコメント)し、:wq!で保存する。
バンドルインストール実行
# bundle install --path vendor/bundle ・ Gem::Ext::BuildError: ERROR: Failed to build gem native extension. ・ ----- mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again. ----- ・ An error occurred while installing mysql2 (0.5.1), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.1' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2
エラーが発生した・・・
エラーの内容やWEBで調べたところ、
この部分を解決しないといけない模様
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or
'yum install mysql-devel', and try again.
yum install mysql-devel'を実行してみる。
# yum install mysql-devel ・ Is this ok [y/d/N]: y ・ Installed: mariadb-devel.x86_64 1:5.5.56-2.el7 Complete!
Complete!と出たので成功!
mariadb-devel.x86_64 1:5.5.56-2.el7
がインストールされたみたい。
mariadb-develって何なのかなあと思ったら、
develとついているものは、開発環境で使うファイルも含んだもののようです。
よくわからないですが。。。
初心者の僕のイメージとしては、develなしのものと同じものだけど、
プログラムのコメントのようにそのアプリの内容を確認しやすくするファイルも同梱してますよという意味かなあと思いました。
再度バンドルインストール
# bundle install --path vendor/bundle ・ Bundle complete! 18 Gemfile dependencies, 74 gems now installed. Bundled gems are installed into `./vendor/bundle`
エラーなく完了!
次に、Gemfileより「gem 'sqlite3'」をコメントアウトして、
バンドルインストールする。
# vim Gemfile #gem 'sqlite3'
#を頭につける。
バンドルインストール実行
# bundle install --path vendor/bundle ・ Bundle complete! 17 Gemfile dependencies, 73 gems now installed. Bundled gems are installed into `./vendor/bundle`
前回
Bundle complete! 18 Gemfile dependencies, 74 gems now installed.
と比べて
今回
Bundle complete! 17 Gemfile dependencies, 73 gems now installed.
数字が1つ減った。
2.DB接続設定
railsがMariaDBを使用する設定をする。
デフォルトではSQLite3を使用している。
# vim config/database.yml
もともとのconfig/database.ymlの中身
# SQLite version 3.x # gem install sqlite3 # # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' # default: &default adapter: sqlite3 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 development: <<: *default database: db/development.sqlite3 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3
変更後
# SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' # default: &default adapter: mysql2 encoding: utf8 pool: 5 username: root password: ***** timeout: 5000 development: <<: *default database: test001_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: db/test001_test production: <<: *default database: db/test001_production
黒太文字部分を変更。
test001の部分はアプリ名(アプリのフォルダ名)を記載する。
****はMariaDBのrootのパスワード
コメント部分(頭に#のついた行)はSQLiteの記述になっているが、動作に関係ないので一旦無視する。
データベースの作成
# rails db:create Created database 'test001_development' Created database 'db/test001_test'
成功!
MariaDBの確認
# mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
パスワードを入力する必要がある模様
Cloud9ではいらなかったのに、どこの設定が違うか不明
パスワードオプションを付ける(パスワードはMariaDB作成時に作ったユーザのパスワード)
# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 13 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
データベースの確認
MariaDB [(none)]> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | db/test001_test | | mysql | | performance_schema | | test001_development | +---------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]>
config/database.ymlに記載した
test001_development
db/test001_test
が作成されている。
これでrailsとMariaDBを連携できましたっ!