Programing 73-76日目
【本日の勉強内容】
・ECサイト制作(24h)
【解決済み】
・letter_openerのconfirmationメールのリンクが「localhost」に飛ばされてしまい、cloud9のURLに飛ばない
→devlopment.rbのconfig.action_mailer.default_url_optionsのhostをcloud9のプレビューTOPのURLにするだけ
・MVCを複数形にするかどうかが統一されてなかった
→コントローラーは複数、モデルは単数、
【未解決】
・product.rbにimage(string型)をnot nullで指定したところ、seed.rbでimageに文字列を入れてもエラーに。
→とりあえずnot nullを外してmigrationをし直して、運用している。
【新出単語】
controllers/concerns は controller に関する処理を module 化するときに使う
models/concerns は model に関する module で使う
has_manyはモデルを複数形で書く。
belongs_toはモデルを単数形で書く。そもそもモデルの語尾を単数/複数に変えてよいなんて思いつかなかった。
Model.build=newと同じ機能だが、慣例的に外部キーがあり他のモデルと関連付けされたものに使われることが多い。
例)以下の2つは同じ
@campaign = Campaign.new(user_id: current_user.id)
@campaign = current_user.campaigns.build
【時間】
24h
【メモ】
・改めて、1からアプリを製作して、遠回りに見えたが、色々なことがクリアに理解できるようになった。
has_many/has_one/belongs_to/newとbuildの違い/tableのreferencesの意味/
などなど。
残りは商品の購入履歴とメール機能、S3の連携のみ。
Programing 71,72日目
【本日の勉強内容】
・ECサイト制作(12h)
【解決済み】
・letter_openerのconfirmationメールのリンクが「localhost」に飛ばされてしまい、cloud9のURLに飛ばない
→devlopment.rbのconfig.action_mailer.default_url_optionsのhostをcloud9のプレビューTOPのURLにするだけ
・MVCを複数形にするかどうかが統一されてなかった
→コントローラーは複数、モデルは単数、
【未解決】
・product.rbにimage(string型)をnot nullで指定したところ、seed.rbでimageに文字列を入れてもエラーに。
→とりあえずnot nullを外してmigrationをし直して、運用している。
【新出単語】
【時間】
12h
【メモ】
順調に制作が進んでいる。
しばらくRailsに触っていなかったので、過去GitHubにプッシュしたものを参考にしている。
不要なクレカ決済、外貨などには対応せず、もう少しシンプルなものを、独力で作りたい。
バイト・勉強・その他の用事をバランスよく片付けながら作業が出来ている。この調子で週末までに完成させたい。
Programing 65日目
【本日の勉強内容】
・住所入力フォームにvalidation設定(2h)
・ルーティングに管理者ページへのアクセス制限記述(1h)
・カートにアイテムがない時は購入不可に(2h)
・検索件数の表示と件数0の時は別メッセージ(3h)
【解決済み】
【未解決】
【新出単語】
DI=依存性の注入
あるクラスが依存している別の処理を、外部から渡すことでコンポーネント間の依存度を下げるテクニック
【時間】
8h
【メモ】
順調に技術試験でもらった改善点を潰していく。大きなものを後回しにしているので、明後日あたりがピークになりそう。木曜日までに全て改善して就活を再開する予定。
Programing 64日目
【本日の勉強内容】
・AWS S3にファイルアップロード(4h)
・Mailに注文内容/金額/振込先を記載(4h)
・販売履歴機能の追加(4h)
【解決済み】
・販売履歴のtableに販売したデータをそのまま挿入したいが、うまくできない。 →SQL文の理解度が低かったのと、オブジェクトの要素を指定するのに $pItem->quantity; $pItem.quantity; としていた。Railsの名残?
・return $this->index();でオブジェクトがないとエラーが出た。
→原因不明だが、サーバ再起動や一度元のコードに戻すなどしてるうちに、急に正常に戻った。
・Herokuで画像が表示できず、エラーに
→AWSのエラーでてんやわんやしているうちになぜか解決していた。
Herokuを開き直したからか、それともサーバー再起動をいつの間にかしていたのか。
・GitHubからキーパスを抜かれる
→あまり記事が上がっていなかったが、とんでもないセキュリティ上のミスをしてしまっていた。クロウラーが巡回しているらしく、ものの10分あまりでAWSからセキュリティ通知が殺到、最後にはアカウント凍結。すぐにAWSの言う通りGitHubから.env削除、rootユーザーのパス変更をし、完了のメールを送ったので、1時間後には凍結解除となった。しかし全てのインスタンス(S3だけなぜか無事)が消えたので、もう一度cloud9を白紙から・・・1hでリカバリーできたのは奇跡。
・当然Herokuが500エラーに。
→.envをgitignoreしたため。中に設定をしっかり書き込んだら起動した。
【未解決】
これから改善したい点
・販売履歴をユーザー毎にまとめて表示、ユーザー名も表示
・メールにユーザー名や住所などを表示
・商品ソート機能
・一般的なセキュリティ対策
・商品により多くの属性をつける(description,)
【新出単語】
【時間】
12h
【メモ】
試行錯誤を止めなければ、問題は解決するとよくわかった。疲れているときや集中していない時は、その試行錯誤が止まり、同じようなワードで延々検索していたりする。販売履歴はtableへの書き込みが難しかった。
AWSのミスは完全に終わったと思った。もう提出まで何も手を付けられないと思ったが、AWSのレスポンスが非常に早く、早朝5時にも関わらずアカウント凍結が解除された。本当に助かった。.envへの印象がかなりくっきりとついた。
Programing 63日目
【本日の勉強内容】
・AWS S3にファイルアップロード(4h)
・AWS S3から画像URLを取得、表示(4h)
・販売履歴機能の追加(4h)
【解決済み】
・AWS S3でアップができない
→.envやS3のバケットポリシーやパブリックアクセス許可を全てやった後、キャッシュクリア→サーバ再起動で解決。
再起動を最後の1度しか行っていないので、他の作業が必要だったのかどうか謎。今度からサーバー再起動は頻繁に行おう。
環境設定ファイルを更新した後に再起動が必要らしいので、恐らく.envを書き換えた後にやればいいのかな。
・SQLにidを利用したファイル名を付けることが出来ない。
→SQLに新規POSTをするコントローラー中では、id(プライマリキー)は使えない。保存後に使える。なので1つのアクションに2回save();を入れて、1回目と2回目の間でidを利用した。
恐らく邪道だと思うけれど、それ以外の方法が今は見つからない。
・AWS S3でgetができない。
→結論から言うと、getは出来ていた。imgで表示するときに必要なのはオブジェクトではなくオブジェクトのURLなので、$disk->url($item->image_url)で良かった。
F12でブラウザからimgのURLがどうなっているか見られるので、こちらをチェックしながらやった方が絶対に早かった。後悔。
【未解決】
・販売履歴のtableに販売したデータをそのまま挿入したいが、うまくできない。
【新出単語】
eroquent=Rails のActiveRecordをまねた機能で、Modelの連携が楽になるらしい。
【時間】
12h
Programing 58-62日目
【本日の勉強内容】
・ECサイト(52h)
【解決済み】
・@canを使った権限の切り替えがうまく行かない
→@elsecanがなぜかうまく動作していなかったことに気づいて、@can/@endcanを2回記述することでなんとか脱出
・AWS SDK for PHPがセットアップできない
→php composer.phar require aws/aws-sdk-phpというコマンドを打っていたが、composerを入れる時に.pharをリネームして外していた。
なのでcomposer require aws/aws-sdk-phpと打ったら動いた。
なぜかphp composer require aws/aws-sdk-phpではだめだった。
参考:<https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/cloud9.html#cloud9-php-sdk>
<https://akamist.com/blog/archives/246>
【未解決】
【新出単語】
【時間】
12h(本日のみ)
【メモ】
ブログの時間もTwitterの時間もカットしてずっと机の前でプログラミングをしていた。試験には間に合わず、延長を3日だけさせてもらうことに。
基本的な考え方はRaisから流用できるので、0から学ぶよりは早いと思うが、コントローラーからビューへのデータの引き渡し方など、基本的な記述1つ1つは調べないとわからないため、かなり時間をかけたが完成しなかった。
Herokuでの画像使用にはS3が必要だったので、途中まで導入を進めた。HTML/CSSもきれいに調整して、最後の機能「販売履歴」も途中まで導入した。
なんとか月曜日には間に合うと思う。