# 【第16週】パRails輪読会 \(2022\-11\-07\~ 2022\-11\-11\) ###### tags: `パRails(2回目)` - [開催概要](https://hackmd.io/rOcLR0riRqmOgEF0_Ssm0A?both) - [パRails輪読会 ノートまとめ](https://hackmd.io/5emISRvRRXapmakSiHnFJg?both) ## パRailsのサンプルコード・正誤表 - [サポートページ:パーフェクトRuby on Rails【増補改訂版】:|技術評論社](https://gihyo.jp/book/2020/978-4-297-11462-6/support) - [パRails 環境構築の手順](https://hackmd.io/y7qb2BRMT2Wd4tAtKYObcQ) ## 目次 [TOC] ------ ## 2022\-11\-07(月) ### 連絡事項や確認・相談 ### タイムキーパー - tomonariさん ### ドライバー - ガラムマサラさん、Hikaruさん ### 読んだところ - P.400 [落穂ひろい]〜 ### 次回 - P.402 [8-3-2 Rack Middlewareを利用したエラーハンドリング] ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - hikaru - Railsのエラーハンドリングは2種類ある - コントローラーで`rescue_from`を使う - エラーハンドリング用のRack Middlewareを使う - `rescue_from エラー with ` - @fuwa - Railsのエラーハンドリングには`rescue_from`メソッドを使う方法と`Rack Middleware`を使う方法の2種類がある - `rescue_from`は後に登録したものから順番に判定する。ヒットしにくいものから後に書いた方が良さそう - @tomonari - rescue_fromは後から登録した方から順番に判定すると言うのが意外でした。前から判定すると思ってしまいそうです。 - @garammasala29 - (ご迷惑をおかけしました…) - 無茶振りしてしまってすみません🙏 - 自作サービスの404ページ作っていないのでここの復習兼ねて作ってみます! ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - エラーハンドリングのことが全然わかっていないため、この章を通じてちょっとずつ理解したいです。 - さっき新しいMacが来ました!!今日は環境構築頑張ります! - @cafedomancer - バージョンの古いものは Docker で動かしたほうがいい - `docker run -p 9200:9200 elasticsearch:<version>` - ちょっと試してみたけどすぐ動かないな :point_up: - Saki - elasticsearchの件、8章もう少しで終わるので、モブプロやってくださる方は各自で先週やったelasticsearchの設定をやってもらう形がいいかな〜と思ったのですがどうでしょう?? 難しそうなら1回時間をとってみんなで設定するとかかなと思ってます〜 - docker desktop 入れるだけですよ。elasticsearch のプラグインを使うならもう少し手を入れる必要がありそうですが。docker にしよう!!! - 賛成ー!!! - おー! - 入れようー - うおおおお!!!!!! - 読み上げbotの終了は`!shr ec` - @tomonari - エラーハンドリング難しい! - @garammasala29 - hikaruさん代わってもらって助かりました🥺 - いえいえ〜 - @haruguchi - 川村さんリリースおめでとうございます:tada::tada::tada: - ありがとうございます!名前重要! - 開発環境で思い出したdotfile作らなきゃ - thoughtbot/rcm で管理しましょう - それ前も言われたような気がするぞ!! - @fuwa - チーム開発で困っていた箇所ですが、該当の現象が突然発生しなくなってしまってわけわかめ状態です - 今日はイベントスタッフのバイトの登録会に行きました。ツッコミどころしかなくてこれからとても不安です - hikaru - 単発のアルバイトを申し込みました...! ------ ## 2022\-11\-08(火) ### 連絡事項や確認・相談 ### タイムキーパー - tomonariさん ### - Saki ### 読んだところ - P.402 [8-3-2 Rack Middlewareを利用したエラーハンドリング]〜 ### 次回 - P.407 [9章 コード品質を上げる]〜 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - エラーページには動的と静的なページがある - 静的なエラーページだからといってプログラムが停止しているわけではなく、例外は捕捉されてプログラムは続行している。 - RubyまたはRackMiddlewareからエラーページが返される - @garammasala29 - `rescue_from`で登録したエラーハンドラは下から上の順で検索され評価 - 動的エラーページはプログラム(Ruby)で生成されたhtml - ルーティングの制限で`except`は使わない?明示的に使うアクションを`only`で書いた方がわかりやすいのかな? - `:except` 使ってるのはあんまり見たことないな - allowlist 方式と blocklist 方式 - @tomonari - 動的・静的なエラーページの生成のお話が勉強になりました。 - エラーページを確認するには、サーバーエラーならエラーを起こしたいところにraiseを書き、routing errorなどの場合は出鱈目なパスに移動すればいい。 - Gemの実装を確認するのは大切ですね。メンテナンスされていない場合は自分で変更して使うのもありなんですね。 - @fuwa - 動的と静的なエラーページがある。前者はプログラムが動いているもの、後者は動いていないもの - Rack Middlewareで発生したエラーを動的なエラーページとしたい場合はrambulanceなどのgemを使うと良いらしい - 使っていないルーティングは制限しましょう。`only: %i[hoge fuga]` みたいな感じ - npmの課題でメンテナンスされてないgemを使って作るものを変えるハメになったのを思い出しました - hikaru - ActionDispatch::ShowExceptionsでキャッチした例外は`Rails.application.config.exceptions_app`に設定されているRackアプリケーションで処理される(デフォルトはActionDispatch::PublicExceptions) - 開発用と本番用ではエラーページが違う - ERBやHamlは動的にHTMLを生成している - 使っていないアクションのルーティングは残さないように絞る - @cafedomancer - `rescue_from` で登録した処理はぜんぶ実行されるのかな? それともどれか 1 つうまく処理できたら途中で中断される? - Saki - dockerでの手順をノートにもまとめておきました⏩[elasticksearchだけdockerで起動する手順 \- HackMD](https://hackmd.io/y7qb2BRMT2Wd4tAtKYObcQ?both#elasticksearch%E3%81%A0%E3%81%91docker%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86) - dockerは動かすのは簡単だけど設定がとても大変。 - 開発と本番環境でエラーページが違う。 ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - 梅本さん、詳しい説明をありがとうございました!! - 動的・静的の定義が怪しかったので勉強になりました。 - @fuwa - Dockerとてもべんり(使うのは) - イベントスタッフの登録できていたようですが、思ったより遠い&拘束時間が長い&最低時給くらいのお給料だったので近場で別のバイトを探した方が良いかもしれないと考えています - 今日は月食らしいですね! - @garammasala29 - Docker便利すぎて勉強したいと思ったけど、梅本さんでもよく分かってないことがあると聞いて急に怖くなりました - Saki - 今日コードレビューでOKいただけたのに、新しいエラーを発見してしまってoh..となっています - 梅本さんdockerの設定してくださってありがとうございました😭✨ - @haruguchi - umemotosannnosetumeikikitakatta! - 就職して一番最初に勉強したのがDockerで一番最初のPRがDockerfileの書き換えだったことを思い出した。 - hikaru - Docker便利!でも動作がカックカクになった! - Intel chip だと思いですよ。Docker に割り当てるリソースを設定で減らしてください (主にメモリ) 。 - メモリ8GBも取ってた... - アドベントカレンダー登録しました〜🎄 お題... - TRICK2022の解説! - 🙄 - LEF - まだ設定していないのですがWin11+WSL2へDocker Desktopの設定(連携?)が自分で出来るかちょっと不安です……🐳 - たぶん問題なくできると思います。Hyper-V の代わりに WSL2 をバックエンドにする設定があるのでそれを使うとよいと思います。あ、Win 11 が不安ということ? - ありがとうございます!Win11についても多分大丈夫だと思います。 ------ ## 2022\-11\-09(水) ### 連絡事項や確認・相談 ### タイムキーパー - ガラムマサラさん ### ドライバー - Saki ### 読んだところ - P.406 [9章コード品質を上げる]〜 ### 次回 - ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - CIサービスを使うとGitHubにpushした時に自動で全てのテストを回してくれる。 - 便利だけど管理コストも大変そう・・・ - @fuwa - チーム開発でのCircleCIの設定を考えたことすらなかったので勉強になりました〜あんな感じで書いていたんですね - なんとなくGitHub Actions設定ファイルに書いてあることはわかったきがするけれど、自作サービスで作るときはどんなことを書けばよいのかちゃんと勉強した方が良さそう - LEF - CIについてほとんど何も知らなかったので、GitHub上でymlファイルを設定してpushするだけでテストが回ることを確認できて良かったです。 - Saki - 用意されてる雛形が本と結構違うので難しかった。CIとGitHubActionsは自作サービスで触ったけれど、「これを実行させるにはこれが必要らしい」みたいな、おまじない扱いの理解のものもあるので理解したい - イベントはこのドキュメントに一覧で載ってます:[Events that trigger workflows \- GitHub Docs](https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows) - CircleCIも同じように設定ファイルを書いて使う - bootcamp:[CircleCIを追加 by komagata · Pull Request \#5453 · fjordllc/bootcamp](https://github.com/fjordllc/bootcamp/pull/5453/files) - まだ今の時点では、本ではCI回していなくて、P.414で色々設定終わった末の設定ファイルを回してるので、まだ回し時じゃなかったのかも?? - @garammasala29 - CircleCIでは`.circleci/config.yml`で設定ファイルを作っていた。GithubActionとの違いとか速度とかいろいろ気になってきた - 自作サービスのCI設定は雛形に頼り切っていたので、今回設定ファイルを読み込んだことで理解できた気がする。 - @haruguchi - ごめんなさい。全然聞いてなかったんですが、今何をやっていてどんなエラーで困ってますか?(解決できるかは知らんけど) - CIを回してみたら予期しないところでテストが落ちてて、通したいという感じです〜🙏 https://github.com/Saki-htr/awesome_events/actions/runs/3426949377/jobs/5709353398 - なるほど〜、ちょっと時間ある時見てみますね - @tomonari - GithubActionsの設定ファイルにどんなことが書いてあるのかわかったので、自作サービスの時に参考にしたいです。ローカルとCI上で挙動が違うところがあるのが難しいですね。 ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @fuwa - 手元で昨日やっていたDockerでElasticsearch起動できるか試したのですが、indexで500エラーが出てしまいました。。 - バイトの件、近場で時給1,400円で週3&3h/日〜OKの3月末までの求人があったのでこれで良いのでは??という気がしてきています - LEF - 分報にも少し書いたのですが、自分もfuwaさんと同じで、手元でDockerを起動して試してみたところ、エラーが出てしまいました。 - nakama - 自分の環境だけの問題かな、と怖かったので安心しました🥲 - @@maimu_x2x - 手動テスト撲滅したい人間なためCIサービスの設定や運用はちゃんと理解したい! - @tomonari - Githubのアクセストークンが新しくなってなんだか面倒になってました。どう設定するのか調べないと:cry: - @haruguchi - CIなしの開発はちょっともう考えられないな。。。 - 今日は新しく追加するカラムの名前考えてたら一日終わってました - 名前付け難しいですよね... - @Saki - あともうちょっとでリリースできそうです...! 使ってもらうのドキドキです🫀 ------ ## 2022\-11\-10(木) ### 連絡事項や確認・相談 ### タイムキーパー hikaru ### ドライバー Sakiさん ### 読んだところ P.410 [9-1-3 GitHub ActionsでElasticsearchとそのプラグインを使う]〜 (わ〜入力ありがとうございます!) ### 次回 P.414 [9-1-4 イベント告知アプリケーションのCIをGitHub Actionsで 実行する]〜 ### 自由に使う共有スペース tag謎でしたが実行したコマンドを書いておきますね。 ```ruby! git add . git commit -m "first commit" git tag v1 git push origin v1 #tagをpush git push origin main #ブランチもpush git log #v1 tagがついてるのか見れる ``` ### 各自の疑問点や気づき、学んだこと - hikaru - なにもわからない... - `git tag タグ名 `でタグをつけられる - @fuwa - Docker昔ちょっと勉強したはずなのに全くわからなくて悲しみでした - タグを`git tag ◯◯`でつけられる - @garammasala29 - 新しいLinuxの教科書を読み返したくなった - タグをつけるとコミットに目印をつけておける、zip形式でダウンロードできる - @tomonari - DockerはLinux的な難しさがありますね。 - Github Actionsでelasticsearch用に別リポジトリを用意するのが一人ではわからなかったです。 - Githubのタグ付け初めて見ました。 - @haruguchi - tagはコミットにつけるやつ(だからcommitしてから打つ) - -aすると注釈付きタグが打てる (細かい情報盛りだくさん!) -mでコメント(なければ勝手にエディタが開く) - git tagだけだと単純にタグ打つだけ軽量なポインタと書いてある - 過去に遡ってタグ打ちたければ ハッシュ値を渡す - https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E5%9F%BA%E6%9C%AC-%E3%82%BF%E3%82%B0 - シェルスクリプト読めぬ - Dockerは雰囲気で使っている 日々使っている。雰囲気で。 - Github Actionsのお作法も忘れた - @cafedomancer - Docker なにもわからない - Saki - dockerの設定難しすぎる...Railsの本だけどようしゃなくシェルスクリプトが出てきて全然分からなかった...仕事で使いこなせるか不安。 - 仕事でシェルスクリプトを書いたことはないですね、、、ぼくが書いたことないだけなのかな? Docker は使います :naruhododesu!: - linuxの教科書読んでたので雰囲気はちょっとつかめた ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @fuwa - 明日バイトの面接なので緊張します〜 - 昨日かおととい?Elasticsearchをどうにかしようとしてbrew upgradeしたらzshが変わってしまってコマンドプロンプトがとても慣れないです - hikaru - 昨日バイトしてきました〜疲れた - Docker気になる - @garammasala29 - 全国旅行支援でどっかいきたいな〜 - 今月富山行きます! - シースー - 黒部ダム - いいですね〜🛫 - 由縁 札幌 どうですか - 滋賀こいよ! - Saki - リリースブログ書きたいこと多すぎて書き終わらない〜 - @haruguchi - 最近日報徘徊おじさんになってる😅 - ちゃんとはたらいてますか? - うおお!梅本さんに言われてしまった:scream: - 頑張ってるなーと思いながら自分のモチベーションにしてます。 - アドベントカレンダー誰が読みたいねん!みたいな記事書きたい :gogo!: - @tomonari - 自作アプリでwebpackじゃなくてviteというのを使ってみたい。 - ヴィートね - ありがとうございます!トラップ...! ----- ## 2022\-11\-11(金) ### 連絡事項や確認・相談 ### タイムキーパー - tomonariさん ### ドライバー - Saki ### 読んだところ P.414 [9-1-4 イベント告知アプリケーションのCIをGitHub Actionsで 実行する]〜 ### 次回 P.418 [9-3 静的解析]〜 (ありがとうございます!) (いえいえ) ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - @maimu_x2x - GitHub DependadbotやRenovateを使うと利用しているライブラリを定期更新してくれる - 便利!自作サービスに入れたい - 実際の現場ではどの程度浸透してるかが気になる。 - @fuwa - FBCに入る前に勉強用で作っていたリポジトリにDependabotからしょっちゅう怒られているのですが無視しちゃってますね。。 - 自作サービスではDependabot入れてみようかなぁと思います。今度はちゃんとやります。 - @garammasala29 - CI通ってほしかった - Dependabot入れてみよう。と、今自作サービスの`bundle update`したら大量のインストールが始まったので、一筋縄ではいかなそう。 - 実際の現場でどのようにライブラリ更新をしているのか気になる - hikaru - CI回したい、エラー気になりますね〜 - ライブラリのアップデートを怠っているといざというときに作業が困難になる。そこでDependabotなどの自動定期更新サービスを使うと良い - 重要な部分については手動で確認したほうが良い - 自作サービスに組み込んでみたいなと思いました - @tomonari - permission deniedのエラーが解決できなくて悔しい! - Dependabotいいですね。Gemのヴァージョンの組み合わせで動かないことが今回の輪読会でもあったので、updateして動くかどうかまで自動でPRを作ってくれるのは便利な仕組みだと思いました。 - Saki - elasticsearchをCI上で動かすの難しい! - dependabotは自作サービスくらいの規模ならそんなにgemの数がないからこまめにdependabotのPRをチェックできそうだけど、お仕事でやるような大規模な開発だと全部チェックするの大変そう ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @maimu_x2x - 今日の夕飯でチャーハンを作るかすき家に逃げるか悩み中です。最近自炊が面倒・・・ :gogo!: - 2週間前にstagingで発生したエラーが再現せず放置してたら今日再会して、またお前か!という気分になりました。 - Saki - ガラムマサラさん読んでる場所の共有いつもありがとうございます🙏 - dockerやCIまわりが不安で今週とりあえず私がドライバーさせてもらってたのですが、来週からは皆さんにもドライバーやっていただけるようにコラボレーターに追加させてもらおうかなと思っています〜 - 10章のdockerは、dockerについて詳しい説明はしないとあるので、モブプロはせず読んでいく形がいいのかなと思っています〜 - さんせいー! - @fuwa - 今日はバイトの面接があって疲れました〜いきなり電話のロールプレイさせられてビビりました :tea: - チーム開発のissue、調べれば調べるほど嫌な予感しかしません。。 - おお...どんなissueなんですか?? - https://github.com/fjordllc/bootcamp/issues/5609 - これです〜 https://bootcamp.fjord.jp/generations - @garammasala29 - 早速全国旅行支援使って今日はホテルからお送りしてました!前日予約だったのにマッサージチェア付きの部屋で最高です - :urayama: - マッサージチェア!!!!いいな〜〜〜 - hikaru - 友人の結婚式で歌うことになりました。来年1月下旬なのに今からそわそわしてます - @haruguchi-yuma -  テストかけなさすぎて今日一日泣いてました :tea: - 今日Elasticsearchうまくいったんですか? - いってません...😭😭😭😭 -----