Posts

  • 翻訳がない場合にhuman_attribute_nameが例外を投げるようになりました

    Railsアプリケーションが日本語のみだとしても、I18nを使うと文言を一箇所に集約出来ます。これにより表記揺れし難くなる利点があります。この際に翻訳が存在しない場合に例外を投げるように設定しておくと、開発中に必ず気付けるので便利です。

  • テストではJSON.parseの代わりにparsed_bodyを使いましょう

    APIのテストをする際に手でJSON.parseを呼んでいる人は多いでしょう。もちろんそれで問題がある訳ではないですが、実はActionDispatch::TestResponse#parsed_bodyを呼び出せばMIME typeに応じてbodyをparseしてくれます。

  • Go 1.22に更新したらTLSエラーが発生する

    ※この記事はアニポスとは直接関係がありません。

  • 同じ名前のcookieが複数ある場合の仕様

    1つのRailsアプリケーションを複数のsubdomainで動かしているとします。デフォルトでsession storeはcookieなのでブラウザは以下のようなcookieを保持している状態になります。

  • Active Storageの仕組み(その2)

    前回1に引き続きActive Storageの仕組みを見てみましょう。前回はimage_tag user.avatarが、ActiveStorage::Blobs::RedirectController#showにroutingされることを突き止めました。今回はその中身を見ることから始めてみましょう。

  • Active Storageの仕組み(その1)

    今回から何回かに分けてActive Storage1の仕組みを紐解いてみましょう。 さて、早速ですが公式ガイドにならいUseravatarを持っているとします。

  • rails consoleをdefaultでsandboxモードで起動する

    バグの調査などのために本番環境でrails consoleを開く必要に迫られることはあります。このとき意図せずに本番データを書き換えてしまわないように注意が必要です。Railsは安全に見えるmethodでも副作用を伴う場合があります。例えばhas_oneで宣言したrelationに対して代入すると、即座にSQLが発行されます。

  • GitHubもTerraformで管理する

    アニポスではインフラを全てterraformで管理しています。一度terraformに慣れてしまうと手動での設定が億劫になるものです。githubも手動で設定するのは面倒ですし、チームやリポジトリ数が増えるに従い、一貫した設定を適用するのは難しくなります。そこでアニポスではgithubもterraformの管理下に置いて設定をコード化しています。これには幾つかの利点があります。

  • CSVエクスポート機能でもレールに乗る

    データのCSV形式エクスポート機能はあらゆるアプリケーションで求められる事でしょう。Controllerで直接CSVを作りそれを送るのが素朴な実装で、それで問題なく動作する場合も多いでしょう。

  • Rails 7.1で指定した範囲の行にあるテストを実行可能になりました

    Rails 7.1では、指定した行の範囲内に宣言されたテストのみを実行する機能が加わりました。例えば、以下のコマンドはuser_test.rbの10〜20行目に宣言してあるテストを実行します。

subscribe via RSS