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時間
    👉いろいろ試したけれど思い通りにならなかった。悔しいから引き続きチャレンジする。

  • レスポンシブ対応…4時間 👉Youtube見ながらハンバーガーメニュー作ってみたが、上手くいかない😣



  • 新しい発見

Brakemanについて(gemが見つけてくれたエラーに対する修正)

実行したところ、以下のようなエラーが出た。

エラー内容(ブレイクマン)

調べたところ、カレントユーザーであることをきちんと定義しておかないとカレントユーザー以外でアクセス出来てしまう恐れがあるよという意味だと理解。

brakemanscanner.org

変更前

  def set_objective
    @objective = Objective.find(params[:id]) 👉モデルから探しに行っている。
  end

変更後

  def set_objective
    @objective = current_user.objectives.find(params[:id]) 👉カレントユーザーのアソシエーションから探しに行っている。
  end

と修正したら、エラーが解消された☺️
今日の午前中、一部の方にアプリを試して欲しいと送った後だったので、その後の修正ってとてもドキドキした😭
テストコード安心する。(作っておいてよかった)



Brakemanについて(デプロイ後のエラー)

AWSデプロイエラー

結論(解決策)

  • config/environments/production.rbにあるconfig.force_sslfalseにする

  • キャッシュを消す 👉忘れがち!!!


経緯等

  • アプリケーションの脆弱性を探してくれるbrakeman

  • config/environments/production.rb にあるconfig.force_ssl = trueは元々コメントアウトになっているが、(過去の記事参照)コメントアウトを外した方が安全だよとメッセージが出ていたので昨日修正していた。

  • 安全になる理由としては、trueにすることによって、暗号化されるhttpsのみ許可し、暗号化されないhttpを弾く仕様に変わるため。

  • しかし、今回AWSのデプロイでは、httpsで取得をしていないため、アプリケーションを開けなくなってしまった。

  • Herokuはデプロイ出来ているのに、AWSだけデプロイ出来ないのは、昨日のブレイクマンのせい?と仮説はすぐに立ったが、

(1)キャッシュを消すということを忘れており、config.force_ssl = falseに変えても直らない!😭
(2)今回、データベース変更などをしており、dropcreatemigrateを行っていた。しかし、その時のコマンドをうつの間違えた。だからそのせい?
など、混乱してしまった。

  • 混乱している中でも解決できたのは、ログを確認したり、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時間」に変えたら、無事表示させることができた。
カール実行後

  • 本来はhttpsの方が安全性が高まるので良い。今回は、falseとし、AWSについてhttpsドメイン名などを取得したら、変更しようと思う。
参考になった記事

qiita.com

感想

  • AWSエラーについて、ここまで来たのにデプロイ出来なくなっちゃった😫うわーって、なったけれど、冷静に間違えている部分を探せたので良かった。

  • すぐに「土曜日に直したhttpsが原因かも」と頭の回転ができたのも、当時brakemanのエラーを理解してからコードを修正していたからだった。意味を理解しながら進めることは後々自分のことを助けてくれると感じた。

  • AWSエラーになってしまった時、仲間に今アクセスしても見れないですと情報共有したら、すぐ力になろうとしてくれた方がいて嬉しかった。

  • 自分の判断について、正しかったのだろうかと悩んだことがあった。編集リクエストすごく嬉しかった。①アウトプットのおかげで間違いに気付けたこと。②これってエラー解消になったとしても相手のためになる?と疑問に感じる記事は今後上げないこと。を感じた。編集リクエストと共に教えてくださった内容が上手く解消できなくって悔しかったので引き続きチャレンジしようと思う。

  • レスポンシブ対応、全然上手くいかなかった😭原因としてはHTML・CSSだけの動画通りに作ってしまったため。動画で大枠を理解しつつ、Railsとの兼ね合いや、今作っているアプリの要素などを確認して、一つ一つやっていこうと思った。