Tech

過去のとか任意のバージョンのRailsでrails newしたい

Railsのことを完全に忘れて、そもそもレールズを始めるときはどうすればいいんだ?となったので書いておく。 Rubyの入ってる適当なコンテナーを使って、 gem install rails とかはやらないという前提で。 使いたいバージョンのRailsを入れる newするためのブ…

textlintをWeb Workerとして動かしてアプリに組み込む

Web Workers APIを使うのは初めてなので、この使い方で問題ないのかはよくわかっていない。これから学んでいきます。 動機 会社でtextlintを便利に使っており、ユーザーさんからのお問い合わせ窓口を自社開発しているので、返信内容を送信前にlintにかけたい…

ActiveRecordで子のアソシエーションが必須の場合のFactoryBotの使い方いろいろ

社内ドキュメントに書いたものの転載。 前提 猫と猫の脚というモデルがあり、猫は脚が一本以上は必要というバリデーションがされているとき、 class Cat < ApplicationRecord has_many :cat_legs, dependent: :destroy validates :cat_legs, presence: true …

S3の暗号化方式についておさらい 2021.06

社内向けに書いた記事を転載。 SSE (サーバーサイド暗号化) SSE-S3 S3が管理するキーでの、透過的暗号化。 Pros 設定すればいいだけなのでラク 共通の鍵なので追加コストもなし Cons 透過的復号がされてしまうので、S3のコンソールでダウンロードしても復…

ActionMailerのdeliver_laterでメール送信する場合のユニットテストの書き方

社内ドキュメントに書いたやつを転載。 課題 deliver_laterを使う場合、Railsガイドのメイラーの機能テストの項にあるような、 ActionMailer::Base.deliveries.last での検証はできません。 これは、deliver_laterは非同期でのメール送信となるため、即時の…

GitHub Actionsでバージョンをバンプしつつタグを打ち、リリースノートにPRベースのchangelogを記載したい

tl;dr https://github.com/shrkw/sandbox/blob/master/.github/workflows/create_release_tag.yml このワークフローを実行すると、こんなリリースタグが生成されて便利。 Release Release v0.4.0 · shrkw/sandbox · GitHub なぜやりたいのか 手動でリリース…

リリースノート、チェンジログを自動で生成したいのでlerna-changelogを使った

デプロイする前にリリースタグを打つ運用をしているんですが、リリースノートに書く内容を自分で集めるのも面倒なので、みんな自動化してるやろと思って調べてみました。 conventional-changelog/conventional-changelog がポピュラーだけど、今回はコミット…

Railsのコントローラでの例外は直接ハンドリングしなくてもいい / 例外処理の方針

以下は静的なレスポンスを返す場合での方針です。動的なレスポンスならこの限りではありません。 基本方針 400番台以降のレスポンス(以下、例外レスポンス)を返したい場合でもコントローラであっても直接renderせず、例外をraiseする application.rb の co…

2020年のRuby/RailsのJSONシリアライザは何を使うべきか問題

よくわからなかったので整理してみる。 候補 Jbuilder https://github.com/rails/jbuilder ActiveModelSerializers https://github.com/rails-api/active_model_serializers jsonapi-rb https://github.com/jsonapi-rb/jsonapi-rb JSON:API Serializer https…

2020.06のReactでReduxは必要なのか

基本的にはstateはコンポネントに閉じ込められて使うべきで外に影響が染み出していくのはよくない。なので、useStateでシンプルに使うだけなのが一番良い。hooksがあるのでいろんなことがとてもシンプルにできるようになった。 とはいえ、遠いコンポネントと…

NulabのbacklogからJiraへのポーティングのやり方

途中参加したプロジェクトでbacklogを利用していたけど、GitHubとの連携とかも含めて、やはりJiraのほうが洗練されていてやりやすいので、移行した。なので、課題をポーティングしたのでやり方を書いておきます。 要件 IDの連番はbacklogのときと同じ数字に…