【第13週】パRails輪読会🚂 (2023-11-13~ 2023-11-17)

tags: パRails🚂

目次


2023-11-13(月)

ファシリ

ドライバー

@ayu_0505

読んだところ

PR: https://github.com/motohiro-mm/Perfect_Ruby_on_Rails_Ch5/pull/7

次回

学んだこと・感想


2023-11-14(火)

ファシリ

@hiromisugie

ドライバー

@moegi29

読んだところ

5-3-4 「Action Mailerのテスト」の項のみ。
PR: https://github.com/motohiro-mm/Perfect_Ruby_on_Rails_Ch5/pull/8

次回

5-4 243p 「Action Mailboxによるメール受信」から。🚂

学んだこと・感想

  • @sharoa

    • 久しぶりのノートな気がするw
    • Action Mailerのテストとして単体テストが用意されていて、ActionMailer::TestCaseを継承としてテストクラスを作るそう。
    • 最初のgenerateの時にすでにテストクラスが生成されている。
    • このテスト以外にも他にも色々ある。
    • テスト関係苦手で、難しいな、としか言えない。
  • @hiromisugie

    • OptionShiftで現在地の行をコピーしてすぐ下にペーストできる
    • assert_emailsは、送信されたメールの数が指定された数と一致することを確認するためのもの。色々なassertがある。
  • @shodan

    • assert_emailsは送信されたメールの数が指定された数と一致することを確認するアサーションメソッド。
    • 引数は一つ目がメール数、二つ目がメール送信処理のブロック。
    • VSCodeの左にあるgitの機能は便利なんですけどコマンドの勉強にならないので注意しないとな〜と思ながら使い続ける日々です……😵‍💫
  • @motohiro-mm

    • git pullできないときの対応難しい…コンフリクトが起きてる?調べておきたいと思います。
    • assert_emails(数字):指定した数字の数だけメールが送信されているかをテストしてる
    • option+shift+↓で指定の行を下にコピペできる!今後使います!
  • @moegi29

    • 何度もドライバーやってるはずなのにいまだに慣れない&エラーがでるとテンパってしまう。Gitの知識を増やしたいです。
    • コピーしたい行にカーソル当てる→Alt shift ↓押すと行全体コピーできる
    • assert_emails(1){email.deliver_now}の()はメール送信する数、メール送信するときの処理のブロック

2023-11-15(水)

ファシリ

  • @motohiro-mm

ドライバー

  • @hiromisugie

読んだところ

5-4 243p 「Action Mailboxによるメール受信」から
5-4-3 246p 「サンプルプロジェクトの作成」まで。
PR:

次回

5-4-4 246p 「Action Mailboxの処理の流れと実装手順」から。🚂

学んだこと・感想

  • @sharoa

    • Action Mailboxはメールを受信した時に処理を行う機能を提供するライブラリ(rails6.0で追加)
      • 例えば、GitHubではプルリクエストにコメントが追加された時にメールが届くけど、そのメールに返信することでコメントを返すことができる。(へぇぇ〜でした。)
    • Actiton Mailboxが対応するメールサービスやサーバはいくつかある、けど、本で推してるSendGridは個人では使えない。
    • Action Mailboxを利用するためには、Active StorageとActive Jobを利用可能にしておく必要がある。
    • さらっと知らない単語を出してくる、ほんと。
  • @hiromisugie

    • Action MAilboxはRails 6.0で追加された。アプリ内でコメントを追加したら自動でメールを配信して、そのメールに返信することでアプリ内のコメントに返信したりもできるらしい。
    • SendGridやMailgunなど、複数のメールサービス・メールサーバに対応している。ここは実際に使うシーンで試行錯誤しないとコツを掴めなそう…。
    • Action Mailboxは、Active StorageやActive Jobを一緒に使うらしい、これもまだピンと来ていない…。
    • rails newする際にエラーを出さない方法をドキュメントでまとめていただいていて大変ありがたいなと思いました🙏
  • @moegi29

    • ActiveStrageには画像だけでなく受信したメールの保存もできる
    • MIME マイム (多目的なインターネットのメールの拡張という意味)の略語
    • ActionMailboxはingress_passwordからパスワードを自動で読み取り認証を行う。RAILS_INBOUND_EMAIL_PASSWORDという環境変数でも設定できるけど複数人で開発している場合はCredentialsを使ったほうが良さそう。
  • @shodan

    • ActionMailboxはメールサービスと連携してメールの受信を行う。
    • メール受信時に、ActionMailbox側の連携のためのURLまでリクエストを送信してもらう必要がある。
    • メールサービス側に、そのURLを伝えておく必要がある。そのURLは運用するWebアプリケーションのドメインや使用するメールサービスによって変わりそう。
    • メールサービスと連携するためにRailsが使うパスワードは、credentials / 環境変数で設定する。
  • @motohiro-mm

    • ActionMailbox:メールを受信したときに処理を行う機能
      • 受信メールの保存にActiveStorage
      • メールに応じた非同期処理の実行およびメールデータの一定期間後削除にActiveJob
    • bin/rails action_mailbox:installで利用できる
    • ActionMailboxはingress_passwordからパスワードを自動で読み取って認証する
    • 以前勉強したモデルのアソシエーションや、credentials、ActiveStorage,ActiveJobが当たり前のように出てきて、復習しないとなと感じました
  • @ayu-0505

    • Action Mailboxはメールの受信機能。外部のメールサービス(Mailgun ,Sendgrid等)と協調して動作する。
    • 利用するにはActive Jobによる非同期処理 と Active Storageによるデータ保存機能が必要となる。
    • bin/rails actiion_mailbox:installにより、ApplicationMailboxや、migrateファイルが生成される。(Active Storageを利用していない場合はこのタイミングで利用に必要なmigdateファイルが同時生成される)
    • 外部からのリクエストを認証するためにcredentialsにパスワードを追記しておく。RAILS_INBOUND_EMAIL_PASSWORDという環境変数を利用してもよい。

2023-11-16(木)

ファシリ

@motohiro-mm

ドライバー

@shodan

読んだところ

5-4-4 246p 「Action Mailboxの処理の流れと実装手順」から
5-4-5 終わりまで。
PR: https://github.com/motohiro-mm/Perfect_Ruby_on_Rails_Ch5/pull/10

次回

5-4-6 253p 「Action Mailboxのテスト」から。🚂

学んだこと・感想

  • @sharoa

    • メールサービスでメールを受信した時にrailsアプリケーション所定のパスへリクエストが送られる。リクエストを受け付けると
        - 1️⃣リクエストの認証を行い、パスワードが正しいものであるかを判別する
        - 2️⃣InboundEmailモデルのレコードを作る(InboundEmailはメールの処理状態を管理するためのモデル。)
        - 3️⃣上の2と同時にメールデータをActive Storageの経由で保存する
        - 4️⃣Active Jobを利用して受信メールに対しのて処理を非同期処理バックエンドのキューに登録する
        - 5️⃣メールサービスにレスポンスを返す
    • 4️⃣でキューに登録されたジョブは受信したメールの情報から判断してどんな処理をするかの振り分けをする。振り分けのルールはApplication Mailbox内でroutingメソッドを利用して記述する。
    • 複数の条件にマッチするメールが存在していた場合は、config/routes.rbと同じように一番最初にマッチした処理を実行する。
    • Action Mailboxは開発用のWeb UIを用意している。
        - 動きが見れたのは良かった。
  • @sadanora

    • 正規表現//i
      • /i大文字と小文字を区別しない
      • 完全に忘れていたので教えていただけてよかったです!
    • InboundEmail
      • Action Mailbox の基礎 - Railsガイド
        • 受信メールはActive Recordを用いてInboundEmailレコードになり、Active Storageによってライフサイクルトラッキングや元のメールのクラウドストレージ保存を行い、データを「on-by-default incineration(焼却)」で責任を持って扱います。

      • Action Mailboxで扱う受信メールは基本的にこのActiveRecord::InboundEmailクラスのオブジェクトとして扱われるてコト?
  • @moegi29

    • ActiveJobのキューに登録されたジョブは受信したメールの情報から判断してどんな処理をするのか振り分けられる。振り分けの定義はApplicationMailBox内でroutingメソッドを利用する。
    • /i は正規表現で大文字と小文字を区別せずにマッチを行うものというのを忘れていた
    • ActionMailBoxを開発するWEbUIの動きを見れたのがたのしかった
  • @motohiro-mm

    • app/mailboxes/application_mailbox.rbにメールがどのような処理に移るか書いておく
    • Mailboxクラスはrails g mailbox 名前で生成できる
    • 実際のメールの処理(processとかのところ)は正直なんとなくしか分からなかったので、もう一度読みます
    • 設定はいまひとつわかっていませんが、実際の画面で受信したメールの一覧等が見られてわかりやすかったです!
  • @shodan

    • InboundEmailモデルが、メールの処理状態を管理している。
    • 受信したメールの情報に応じてルーティングを行い、それに応じた処理を分けることができる。
    • ドライバー、慣れておらずタイピングも遅くなり流れが遅くなってすみませんでした〜🙇‍♂️
  • @hiromisugie

    • 受信したメールの内容に応じてどんな処理をするのか振り分けるための定義方法が、routes.rbと少し似た方法というのが、へ〜という感じだった
    • ActionMailboxの処理の流れについてWeb UIで確認することができた。やはり画面上で実際に動いているのを見ると楽しいし、なんとなく理解も進むような気がする。
    • VS Code上でのGit操作、便利そうで気になりました👀

2023-11-17(金)

ファシリ

@motohiro-mm

ドライバー

@ayu-0505

読んだところ

5-4-6 253p 「Action Mailboxのテスト」から
5-5-2 256pまで。
PR:

次回

5-5-2 257p から。🚂

学んだこと・感想

  • @sharoa

    • Action Mailboxは全体的に難しかったのでまた復習したいと思います。
    • Action Textはrails6.0で追加された機能の一つ。
    • リッチテキストを編集するためのエディターとリッチテキストを保存するデータベースを簡単に用意してくれるとのこと。
        - リッチテキストとは。Outlookでメール作成時に選べるリッチテキストはどんなときに使う?
    • Action Textはドラッグアンドドロップによるファイルアップロード機能に対応しており、ファイルアップロードを実現するためActive Storageを利用している。
    • 目の前で簡単に画像がアップロードされたのが確認できて良かった。
  • @moegi29

    • recieve_inbound_email_from_mailメソッドはActionMailbox用のヘルパーメソッド。InboundEmail作成したり、ApplicationMailboxで定義したroutingに対応する処理を実行するもの
    • InboundEmailには引数として与えられたtoやfromなどが設定されている
    • リッチテキストはあくまで文字周りの装飾をする。
    • ImageMagickのバージョン確認方法はconvert -versionでできる
  • @sadanora

    • receive_inbound_email_from_mail
      • ActionMailBox用のヘルパーメソッド
      • 引数として与えられたtoやfromなどが設定されたInboundEmailを作ってくれる。テストでこのメソッドを使う。
    • ActionText
      • リッチテキストエディタとリッチテキストを保存するDBをかんたんに用意できる機能。
  • @motohiro-mm

    • ActionMailboxのテストでは、receive_inbound_email_from_mailメソッドがある
      • InboundEmailを作成し、かつActionMailboxで定義したroutingに沿って対応する処理を実行する
    • ActionTextは、Railsにリッチテキスト機能を追加する
    • rails action_text:installで関連ファイルを生成できる
    • モデルにリッチテキストを属性としてもたせるにはhas_rich_text :リッチにしたい属性とかく
  • @ayu-0505

    • receive_inbound_email_from_mailメソッドはAction MailBox用のヘルパーメソッドで、引数として与えられたto,fromなどが設定されたInboundEmailを作成し、routingに対応する処理を実行するらしい。
    • Action Mailboxはなかなか再現できずに難しかった。
    • Action Textはリッチテキスト機能を追加する。エディターはWYSIWYG。Active Storageを利用している。
    • has_rich_text :モデルの属性名でリッチテキスト機能を追加できる。
  • @hiromisugie

    • rfc822というのはメールの規格のようなもの??
    • Action Textはリッチテキストを導入できる。WordPressでサイトを作るとき、投稿画面でWYSIWIGにするかプレーンテキストにするかみたいな設定をできるのだけど、Railsでもこれでサクッと実装できるということ?
      • 今日実際にやってみた感じだとサクッとできてとても便利そう!
    • 以下は手順メモなので読んでいただかなくて大丈夫です🙇‍♂️
      • scaffoldでmessageを作成
      • action_text:installを実行
      • rails db:migrateを実行
      • Gemfileのgem 'image-processing'をアンコメント
      • bundle install
      • ImageMagickをインストール
      • Messageモデルにhas_rich_text: contentを宣言
      • ビューテンプレートでrich_text_areaヘルパーを利用
      • ストロングパラメーターの定義を修正
  • LEF

    • シェルティは、かわいい🐶

Select a repo