1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

手順メモ(ニックネームAPI/Ruby on Rails)

Last updated at Posted at 2017-11-05

開発環境

Cloud9

  • 下記の環境で開発

  • Workspace作成時のtemplateはBlankを選択

  • Rails5.1.4(APIモード)

  • PostgreSQL

  • APIモードの採用

  • 下記コマンドでRailsプロジェクトを新規作成すると、APIに不要なviewファイルなどが自動生成されないようになる(Rails5.0以降で利用可能)

$ rails new nickname_api_v1 --api

その他準備

githubとSlackの連携

  • 参照サイト

  • GitHubのpushやプルリク通知をSlackに投げる

  • メリット

  • githubでプッシュ/プルリク/コメントがあった際、リアルタイムでslackへ通知してくれる

  • チームメンバーが全体の開発状況を把握しやすくなる

実装

デフォルト以外で追加した主なgem

辞書の作成

ニックネームを付ける対象となる苗字/名前の抽出

  • PythonによるWebスクレイピングで、下記サイトから苗字1,000+名前5,000の合計約6,000件を抽出。

  • 同姓同名辞典

  • 赤ちゃんの名前

  • 下記のようなcsvファイルを用意し、末尾列にニックネームを入力していく

lname_2char.csv
苗字,ローマ字,ニックネーム
中井,nakai,なかちゃん
武藤,mutou,ムトゥーさん
神田,kanda,かんちゃん
岡部,okabe,..
今野,konno,..
  • csvファイルをRails側でDBに格納するスクリプトをseeds.rbに記述
seeds.rb
require 'csv'
 
# 作成したcsvを1行ずつ読みとり、ActiveRecord(Model)経由でDBに格納する
CSV.foreach('db/csv/lname_2char.csv') do |row|
  LnameTwoDict.create(kanji_lname: row[0], romaji_lname: row[1], nickname: row[2])
end
  • 上記seeds.rbがプロジェクト内にある状態でrails db:seedを打てば、開発メンバー全員が同じDBを各ローカルに作成できる
  • 本番環境でも同様にコマンドを打ち、辞書データをMySQLに格納
  • 注)本来、seeds.rb及びrails db:seedはテスト用データ作成の用途で利用されることが多いが、今回のAPI作成においてはDB(辞書)の内容を動的に変更する必要がなく、初期データさえ格納されていればOKであるため、本番でも使用した。

ロジックの実装

  • 漢字/カナ/平仮名/ローマ字、あるいはその複合パターンが入力された場合に、できる限り広くニックネームへの変換が可能なロジックを構築する
  • やった事
  • 考え得るLINEネームのパターンを列挙する
  • 入力〜変換までのフローチャートを書く
  • ロジックが完成したら、後はそれを実現するためのコードを記述していく。

本番サーバ(AWS/EC2)へのデプロイ

詰まった箇所と解決策

  • ターミナルからEC2にログインできない

  • [解決] AWSコンソールから、セキュリティグループのインバウンドルールに現在のグローバルIPをSSH時に許可するよう設定する

  • rails db:〜系のコマンドがEC2で通らない

  • [解決] RAILS_ENV=production を末尾につけて実行する

  • 本番環境でのPostgreSQLの設定がややこしい(参照サイトはMySQLを使用した場合の解説)

  • [解決] 本番ではMySQLを使用する事に

  • productionのgemをpgからmysql2へ変更

  • EC2に入れたPostgreSQLをアンインストール → 新たにMySQL5.7をインストール

  • Unicorn起動時、MySQLのsocketエラーが出る

  • [解決] mysql_config --socket でsocketのパスを確認

  • これをdatabase.ymlの該当箇所に転記してからUnicorn再起動コマンドを叩く

$ bundle exec unicorn_rails -c /var/www/rails/nickname_api_v1/config/unicorn.conf.rb -D -E production
  • 上記エラーなどがない場合、下記を叩けばOK
$ kill -USR2 `cat /path/to/unicorn.pid`

その他EC2メモ

  • EC2での設定後は、下記でTerminalからryota(一般user)としてログインできるようになっている
[~/.ssh] ssh railsapi_key_rsa
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?