今までの麻雀アプリは一人でずっとやるだけだったので、
もう少しデータ的なのを集められるようになりたいなーと思って
ちょっと改良しました。
みんなのあがり回数とあがりまでの平均ツモ数を表示できるようにしました!
◇開発言語
ruby 2.6.3
◇サーバーサイドフレームワーク
ruby on rails 5.2.3
◇フロントエンドフレームワーク
Vue.js
◇データベース
MySQL
◇開発OS
mac
◇IDE
vscode
◇ソース管理
GitHub
◇アプリケーションプラットフォーム
Heroku
忘れないうちにRuby On Railsのインストール手順とかまとめておきます。
#Ruby On Railsのインストール
まぁ、Railsのインストール手順とかは色々記事があるのでそれを見ればできます。
自分はRails Girls ガイドを見ながら環境を作りました。(Girlじゃないけど)
基本的にはRails Girls ガイドの通りに作業を進めればいいんですが、
Homebrewのインストールがうまく行きませんでした。
brew doctor を実行してエラーがないか確認したところ
11:05:46 Users $ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew-provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7-config
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m-config
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3-config
11:05:52 Users $
と大量のWarningが…。
原因ですが、「-config」ファイルにPathが通っているとWarningが発生するみたいです。
envコマンドで環境設定確認すると、確かにPythonのPathが通ってますね。
11:12:40 Users $ env | grep PATH
PATH=/Users/itoutoshiya/.rbenv/shims:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
以下のサイトを参考に、
PathからPythonを除外してbrewコマンドを実行するエイリアスを作成しました。
参考:https://www.task-notes.com/entry/20141223/1419324649
alias brew="env PATH=${PATH/\/Library\/Frameworks\/Python.framework\/Versions\/3.7\/bin:/} brew"
コンソールを再起動してbrew doctorを再実行。
11:22:47 ~ $ brew doctor
Your system is ready to brew.
これでHomebrewのインストールはうまくできました!
残りのソフトは、Rails Girls ガイドの通りに実装できました。
#MySQLのインストール
MySQLのインストール手順も参考になる記事はたくさんありますね。
自分は以下のサイトが分かりやすかったので参考にさせてもらいました。
https://qiita.com/fuku_tech/items/a380ebb1fd156c14c25b
brew install mysql
#railsプロジェクト作成
必要なものは全部インストールできたので、早速
mysqlを利用するRailsプロジェクトを作成します。
といっても、さすがRails。コマンド一つだけですぐにできます。
rails new ./ -d mysql
適当なフォルダにて上記コマンドを実行すればOKです。
VScodeにてコンソールを表示し、上記コマンドを実行すれば必要なファイルが勝手に作成されます。
config/database.ymlを確認すると、ちゃんとMySQLを使う設定になってますね!
んで、早速Railsの起動コマンド「rails server」を実行。
デフォルトだと地球儀の絵がTOPページに表示されるはず。
うーん失敗。
ただ、以下のメッセージからするに、mysqlに接続できていない感じ。
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
というか、そもそもsqlサーバーを起動していないので、そりゃDB接続できないよってエラー出ますよね。
ということで、以下コマンドを実行してsqlサーバーを起動。
mysql.server start
うん。sqlサーバーは起動できたみたいです。
じゃぁもう一度Railsを起動し画面を確認!
まぁ、エラーになるよね。今回のエラー原因は以下の通り。
Unknown database 'project_development'
project_developmentってデータベースがないよーってい言ってますね。
project_developmentは、config/database.ymlで設定している
データベースですね。
mySqlにログインしようとしてもproject_developmentはないからエラーになりますね。
まぁ、project_developmentを作ってないので当たり前ですね。
なので、project_developmentを作ります。
ただ、これもRailsを利用して作成することができます。
以下コマンドを実行するだけ!
rails db:create
はい!できましたー。
じゃぁもう一度Railsを起動し画面を確認!
地球の絵!
見慣れた画像が表示されました!
とりあえず、これで環境面は一通りできました!
#テーブル作成
今回は、上がりまでにかかった自摸の回数をテーブルに記録させていきたいと思います。
Railsのコマンドを実行すると、テーブルやそのテーブルにアクセスするための機能(プログラムファイル)
も自動でできます。
rails generate scaffold WonCount name:string wonCount:integer
ですが、上記コマンドだけだと肝心のテーブル自身は作成されません。
マイグレーションを実行する必要があります。
と言っても難しいことは何もしません。
以下コマンドを実行するだけです。
rails db:migrate
参考:https://www.sejuku.net/blog/14229
ここまでくれば、後はあがりまでの自摸数をDBに登録するAPIを実装するだけです。
#Herokuへのデプロイ
ローカル環境ではうまく出来たので、早速インターネットに公開したいと思います。
サーバーは、またHerokuを使います。便利ですね、PaaS。
参考:http://arfyasu.hatenablog.com/entry/2016/01/11/035101
https://devcenter.heroku.com/articles/rails4#logging-and-assets
###rails_12factor
rails_12factorというのをHeroku上で利用できるように設定します。
rails_12factorは、Herokuでのログを見れるようにするgem(Rubyのライブラリ)です。
Gemfileに以下記述を追加するだけでOKです。
group :production do
gem 'rails_12factor'
end
###Procfile作成
Procfileを作成し、Heroku上での起動コマンドを記述します。
以下記述だけでOK。
web: bundle exec rails server -p $PORT
###Herokuにアップ
はい。ここまで出来たらHerokuにアップします。
HerokuGitにアップする方法もありますが、
自身のGitHubにアップしたプロジェクトを利用します。
んで、プロジェクトアップロード後にWebサイトを確認。
はい。失敗〜。
Herokuのログを見ます。コマンドプロンプトから以下コマンドを実行〜。
heroku logs --tail --app rubymahjong
※「rubymahjong」は、Herokuにアップしたプロジェクト名です。
Mysql2::Error::ConnectionError (Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)):
MySQLに接続出来なくてエラーになってますね。
#HerokuにMySQLのDB作成
MySQLを利用するにはHerokuにクレジットカードの情報を登録する必要があります。
クレジットカードの登録だけなら無料です。(2019/08/04現在)
クレジットカード登録後、コマンドプロンプトから以下コマンドを実行しMySQLが利用できるようにcleardbアドオンをインストールします。
参考:https://www.yuta-u.com/programing/rails/heroku-mysql-2
heroku addons:create cleardb:ignite --app rubymahjong
Heroku上の「Overview」を見ると、MySQLがアドオンされたことが分かりますね。
以下コマンドを実行してコンフィグを確認しても、MySQLが追加されたことが分かります。
heroku config --app rubymahjong
CLEARDB_DATABASE_URLに、デプロイ用のDB接続情報が記載されています。
CLEARDB_DATABASE_URL: mysql://bfc76098d1b006:90049602@us-cdbr-iron-east-02.cleardb.net/heroku_c287fee3253ccb2?reconnect=true
この情報をDATABASE_URLとして設定します。
ただし、Railsのgemでインストールしているのがmysql2のため、
mysqlではなくmysql2に変更して設定します。
heroku config:set DATABASE_URL=mysql2://bfc76098d1b006:90049602@us-cdbr-iron-east-02.cleardb.net/heroku_c287fee3253ccb2?reconnect=true --app rubymahjong
変更後、またコンフィグを確認してみます。
【変更後】
heroku config --app rubymahjong
DATABASE_URLが追加されてますね!
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_c287fee3253ccb2.won_counts' doesn't exist: SHOW FULL FIELDS FROM `won_counts`):
won_countsテーブルがなくてエラーになってますね。
テーブル作成はマイグレーションですね。以下コマンドを実行!
heroku run rails db:migrate --app rubymahjong
なんか出来てる感じですね!
早速ブラウザから画面を確認してみます。
Herokuって便利ですねー。
Rails+MySQLってかなりのWebサービスで利用されてそうで、
その環境が簡単に作れると色々なことが出来て夢が広がりますね!
今回のプログラムは以下GitHubにあげてます。
https://github.com/kph7m/rubymahjong