20210220・21_アウトプット(オリジナルアプリ/README・レスポンシブ対応)
2/20行ったこと
午前中:志望動機の作成。READMEやアプリの説明を行うにあたってマインドマップの作成。
brakeman
と、rails_best_practices
を実行して修正…1時間20分READMEの修正(URL・テーブル情報・バージョン情報・テストコード・ER図の作成まで)…4時間10分 👉ER図が8割くらい進んだ。後もう少し!
2/21行ったこと
ER図完成&マスターブランチ反映後マージ・デプロイ...1時間
👉HerokuはOKだったがAWSでエラー。AWSでのデプロイでエラー解決...2時間30分
👉解決できた。curl
コマンドを知った。Herokuのバージョンアップチャレンジ…3時間
👉いろいろ試したけれど思い通りにならなかった。悔しいから引き続きチャレンジする。
新しい発見
Brakemanについて(gemが見つけてくれたエラーに対する修正)
実行したところ、以下のようなエラーが出た。
調べたところ、カレントユーザーであることをきちんと定義しておかないとカレントユーザー以外でアクセス出来てしまう恐れがあるよという意味だと理解。
変更前
def set_objective @objective = Objective.find(params[:id]) 👉モデルから探しに行っている。 end
変更後
def set_objective @objective = current_user.objectives.find(params[:id]) 👉カレントユーザーのアソシエーションから探しに行っている。 end
と修正したら、エラーが解消された☺️
今日の午前中、一部の方にアプリを試して欲しいと送った後だったので、その後の修正ってとてもドキドキした😭
テストコード安心する。(作っておいてよかった)
Brakemanについて(デプロイ後のエラー)
結論(解決策)
config/environments/production.rb
にあるconfig.force_ssl
をfalse
にするキャッシュを消す 👉忘れがち!!!
経緯等
アプリケーションの脆弱性を探してくれる
brakeman
。config/environments/production.rb にある
config.force_ssl = true
は元々コメントアウトになっているが、(過去の記事参照)コメントアウトを外した方が安全だよとメッセージが出ていたので昨日修正していた。安全になる理由としては、
true
にすることによって、暗号化されるhttps
のみ許可し、暗号化されないhttp
を弾く仕様に変わるため。しかし、今回AWSのデプロイでは、
https
で取得をしていないため、アプリケーションを開けなくなってしまった。Herokuはデプロイ出来ているのに、AWSだけデプロイ出来ないのは、昨日のブレイクマンのせい?と仮説はすぐに立ったが、
(1)キャッシュを消すということを忘れており、config.force_ssl = false
に変えても直らない!😭
(2)今回、データベース変更などをしており、drop
・create
・migrate
を行っていた。しかし、その時のコマンドをうつの間違えた。だからそのせい?
など、混乱してしまった。
- 混乱している中でも解決できたのは、ログを確認したり、
curl
というコマンドを知れたからだった。
curl
コマンドとは、通信プロトコル(通信するときにこういうやりとりしようという約束事)の状態を確認できる機能。
ベーシック認証を入れていない場合
f.XXX@XXXnoMacBook-Air アプリ名 % curl http://18.XXX.XXX.90
ベーシック認証を入れている場合
f.XXX@XXXnoMacBook-Air アプリ名 % curl --user IDいれる:password入れる http://18.XXX.XXX.90
上記を実行すると、下記のように表示されたため、アクセスできていないだけで表示できる情報にあることがわかった。
なので、キャッシュを「過去1時間」だけ消していたが「過去24時間」に変えたら、無事表示させることができた。
参考になった記事
感想
AWSエラーについて、ここまで来たのにデプロイ出来なくなっちゃった😫うわーって、なったけれど、冷静に間違えている部分を探せたので良かった。
すぐに「土曜日に直した
https
が原因かも」と頭の回転ができたのも、当時brakeman
のエラーを理解してからコードを修正していたからだった。意味を理解しながら進めることは後々自分のことを助けてくれると感じた。AWSエラーになってしまった時、仲間に今アクセスしても見れないですと情報共有したら、すぐ力になろうとしてくれた方がいて嬉しかった。
自分の判断について、正しかったのだろうかと悩んだことがあった。編集リクエストすごく嬉しかった。①アウトプットのおかげで間違いに気付けたこと。②これってエラー解消になったとしても相手のためになる?と疑問に感じる記事は今後上げないこと。を感じた。編集リクエストと共に教えてくださった内容が上手く解消できなくって悔しかったので引き続きチャレンジしようと思う。
レスポンシブ対応、全然上手くいかなかった😭原因としてはHTML・CSSだけの動画通りに作ってしまったため。動画で大枠を理解しつつ、Railsとの兼ね合いや、今作っているアプリの要素などを確認して、一つ一つやっていこうと思った。