CSVを使った一括インポート機能を作成する際に確認するポイント

先日、CSVファイルを使ったデータの一括インポート機能を作成する機会がありました。 一連の実装を振り返ると、気にすることや決めるべきことが色々あるなーと思ったので、メモしておきます。 異常系への対応 ✅ ファイルの形式が間違っているケースの対応を…

【Rails】transactionのrequires_newの挙動について整理する

先日、Railsのtransactionのrequires_newオプションを知りました。 techracho.bpsinc.jp tech.smarthr.jp 記事などを見れば理解できるのですが、(非推奨の):joinableと混同して「どっちだっけ?」となるので自分なりに表にまとめて整理しました。 まとめ N…

【Rails】debug_exception_log_levelが効かない?と思ったらbetter_errorsが制御していた

前回に引き続き、better_errors gemによって想定とは違う挙動をしていた体験をしたので、記事にしました。 ↓参考: 前回の記事 blog.m-ito27.com ↓better_errors github.com 背景: Rails7.1から例外のデフォルトログレベルがWARNになった 先日、とあるWebアプ…

【Rails/RSpec】better_errors gemをテスト環境で有効にしていたらハマった

better_errorsは、Railsのデフォルトエラーページよりもエラーを詳細に表示し、デバッグを助けてくれるgemです。 github.com READMEにある通り、基本的にはdevelopment環境での使用が想定されています。 しかしながら、今回、test環境で有効にしていたことに…

『暗号技術入門』読書メモ

cr.hyuki.net 少し前に『暗号技術入門』(第1部、第2部)を読んだので読書メモを残しておきます。 第2章 シーザー暗号 文字ずらしで暗号化する方法 シーザー暗号をRubyで書くと、、を考えてみた。 自分で考えた方法(nextを使う) class String def encrypt_…

外部APIを自社システムに連携するときに気をつけること

先日、自社システムで新しく外部APIの連携を行いました。 その過程で、外部APIを使うときに気をつけることがいくつかあるなーと思ったので記事にします。 1. 外部API側のエラーが起きる前提の実装をし、リカバリーの手段を用意しておくこと 外部APIは、いつ…

『なるほどUNIXプロセス』読書メモ

tatsu-zine.com 自分なりに整理したもの、理解しづらかったので追加で調べて理解したものなどメモです。 forkとCoW(Copy on Write) fork: とあるプロセスから子プロセスを作ること。親プロセスがメモリに持つ情報をすべて持つ。 コピーをするためのオーバ…

【Ruby】rails-settings-cached gemのコードリーディング

rails-settings-cached gemについて、設定の読み出し方、値の更新の仕方などが興味があったので読んでみました。 github.com なお、rails-settings-cachedのバージョンは2.9.4です。 簡単なgemの使い方 ユーザーが以下のように設定ファイルを書くとSetting.a…

【Ruby】Banken gemのauthorize!を読む

はじめに bankenというgemを使って権限管理をしたことがあるのですが、どのように実現しているのか興味があったため、一番主要なauthorize!メソッドを読んでみました。 github.com bankenのバージョンは1.0.3です まとめ 全体的に非常にシンプルなコードで特…

Active Supportのメソッドを自前で実装して本物と比較してみた

RailsのActive Supportには便利なメソッドがたくさんあります。 ふと思いつきで、その便利メソッドを自分で実装して、Railsの実装と見比べたら何か気づきがありそうと思ってやってみました。 対象は、truncateメソッドです。(オプションはomissionだけ対応…

【Rails】sandbox_by_defaultのPRを読みながらRailsの設定の仕組みを少し読んだ

はじめに 先日、Railsガイドを読んでいたら、sandbox_by_defaultという設定がRails7.1から追加されたことを知りました。 本番環境での操作ミスを低減できるので良いなと感じ、早速業務で使っているアプリでもこの設定を有効にしました。 この設定ってどうい…

『オブジェクト指向設計実践ガイド』を2回目読んだら今度は理解できた

以前こんなブログを書きました。 blog.m-ito27.com 「勉強にはなった部分がたくさんあるが、意味が分からない点も多かったのでもう少し力をつけてまた読みたい」といったことを書きました。 ということで、約1年半経ったのでリベンジで読んでみました。 する…

【Rails】paranoiaで論理削除したレコードはユニーク制約バリデーションの対象外になる

paranoiaを使っているモデルでユニーク制約のバリデーションを設定すると、論理削除済みのレコードは制約の対象から外れます。(論理削除済みのアイテムとは重複が許される) その仕組みを理解するために少しgemのコードを読んで気づきがあったので記載しま…

違和感に耳を傾ける重要性

雑記です。 最近、「やってしまったなー」という出来事がありました。 違和感に目を瞑ってしまった とあるPull Request(PR)について、「あれ?あの部分考慮されていないかも?」と違和感を感じたことがありました。 ですが、そのPRは既にマージされていて…

【git hooks】pre-pushで特定のブランチへの誤pushを防止するようにした

はじめに リリース時にのみmasterにpushすることがあるんですが、これをリリース時以外にやってしまうとrevert操作などが必要になって結構面倒なことになります。 そこで、git hooksのpre-pushフックを使って特定のブランチへのpushの際に確認メッセージを表…

Railsガイドにきちんと目を通して新しい知識を得る - Rails のスレッドとコード実行編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails のスレッドとコード実行の章です。 rail…

Railsガイドにきちんと目を通して新しい知識を得る - Rails のキャッシュ機構編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails のキャッシュ機構の章です。 railsguide…

Railsガイドにきちんと目を通して新しい知識を得る - Rails の自動読み込みと再読み込み編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails の自動読み込みと再読み込みの章です。 …

Railsガイドにきちんと目を通して新しい知識を得る - アセットパイプライン編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、アセットパイプラインの章です。 railsguides.…

Railsガイドにきちんと目を通して新しい知識を得る - Rails アプリケーションの設定項目編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails アプリケーションの設定項目の章です。 …

Railsガイドにきちんと目を通して新しい知識を得る - Rails アプリケーションのデバッグ編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails アプリケーションのデバッグの章です。 …

Railsガイドにきちんと目を通して新しい知識を得る - Rails アプリケーションのエラー通知編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails アプリケーションのエラー通知の章です…

Railsガイドにきちんと目を通して新しい知識を得る - Rails セキュリティガイド編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails セキュリティガイドの章です。今回はセ…

GitHub Actionsを使って子供が産まれてからの週数を毎日LINEで通知する

先日子供が産まれたのですが、予防接種の問診票等で何週目か?や何ヶ月何日か?といった情報が頻繁に必要になります。 毎回計算するのが面倒だったのでLINEで毎日通知させることにしました。 定期実行はGitHub Actionsにやってもらうことにしました。 その方…

Railsガイドにきちんと目を通して新しい知識を得る - Rails 国際化(I18n)API編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails 国際化(I18n)APIの章です。 railsguid…

Railsガイドにきちんと目を通して新しい知識を得る - Active Job の基礎編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Job の基礎の章です。 railsguides.jp …

Railsガイドにきちんと目を通して新しい知識を得る - Action Text の概要編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Action Text の概要の章です。 railsguides.jp…

Railsガイドにきちんと目を通して新しい知識を得る - Action Mailer の基礎編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Action Mailer の基礎の章です。 railsguides.…

Railsガイドにきちんと目を通して新しい知識を得る - Active Support コア拡張機能編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Active Support コア拡張の章です。 railsguid…

Railsガイドにきちんと目を通して新しい知識を得る - Rails のルーティング編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。 今回は、Rails のルーティングの章です。 railsguides.…