概要
Railsを使用したポートフォリオの製作過程を記録していきます。作成しているアプリはマクロ(炭水化物・タンパク質・脂質)計算が可能なレシピアプリです。
方針
まずは「完成させること」を目標にします。そのため、テストは未実装ですし、レイアウトも簡素にしています。
環境
- Docker 18.09.2
- docker-compose 1.23.2
- ruby 2.5.5
- Rails 5.2.3
進捗
ユーザモデルの作成
Railsチュートリアルを参考にしてます。Railsチュートリアルは本当に優秀だと思います。
ER図の作成
『達人に学ぶDB設計入門』によると、プログラムの設計よりもデータ設計からはじめる方が効率的らしいので、ER図を作成しました。
材料データの作成
本当はAPIを利用して食材の栄養素データをとってきたかったのですが、良さそうなAPIが見つからなかったので、あらかじめ栄養素データをデータベースに入れておく方法をとります。
具体的には、日本食品標準成分表2015年版(七訂):文部科学省のcsvデータをRailsアプリにインポートします。
そのままインポートはできないので、データを整形したのちにインポートします。
[参考]
食品の栄養価をAPIで取得できるクラウド・データベースを構築する - Qiita
RailsでのCSVデータ投入 - Qiita
日本食品標準成分表2015年版(七訂):文部科学省
railsでcsvを読み込んで、DBへ保存する - Qiita
つまづいたとこ&自分用メモ
csvのインポート
- nameカラムだけインポートされていない(nilになる)
- logを見てみると「invalid multibyte char (US-ASCII)」と表示されたので、文字コードの問題でした。『# coding: utf-8』をseeds.rbの冒頭に追加して解決
Dockerの操作
- rails db:migrateができない?
-
docker-compose run
を使用し、コンテナ内でコマンド実行する必要がある
(例)
docker-compose run web rails db:migrate
[参考]
docker-compose で Rails の開発環境を作る
bootstrap4の導入
-
File to import not found or unreadable: bootstrap-sprockets.
というエラーが出た - Bootstrap4からはRailsへのBootstrapの導入方法が変更になっている
[参考]
Railsアプリで Bootstrap 4 を利用する - Qiita
rails generateをやり直す
$ rails generate controller FooBars hage
「あ、やっちゃった!」
$ rails destroy controller FooBars
「ふ~、助かった」
[参考]
開発中に rails generate や db:migrate をやり直したい時 - Qiita
コメント
csvデータの整形とインポートにかなり苦戦しました。エラーログの見方がまだしっかりと理解できていないので、そこは復習していきます。
それと、「日本食品成分表」のデータはかなり細かく食材が分類されています
ユーザがレシピを登録する際に食材を選択するのがかなり煩雑になるので、このあたりも解決していかないといけないですね。