MogLog

日記 兼 備忘録

`destroyed_by_association` で親モデルの関連により削除されるかどうかを判定する

Rails (ActiveRecord) ネタ。 ActiveRecord::AutosaveAssociation#destroyed_by_association を使うと、モデル間の関連設定により削除されるのか、それとも自身で削除するのかを判定することができる。 例えば、次のように Team と User という2つのモデルが…

.tigrcの地道な改善

.tigrc改善のモチベーション PullRequestを作る revertする mergeする rebaseする stashする おわりに 普段から、開発時にお世話になっている tig について、ちょくちょく改善を加えているので最近加えた設定についてまとめてみる。 .tigrc改善のモチベーシ…

逆算思考でドキュメントを書く

誰のために書くか(対象読者)を考える 対象読者に何を得てもらいたいかを考える 対象読者がその状態になるために何を書くかを考える ドキュメントの構成を考える おわりに 最近ドキュメントを書く機会が増えてきたこともあって、良いドキュメントを書くには…

ActiveRecordのautosaveの設定で子モデル含めた新規作成・更新時の振る舞いはどのように変わるか

最初に結論 検証に利用するModelと関連設定 autosave オプション未指定時 子モデルごと新規作成 子モデルごと更新 子モデルにバリデーションエラーが発生する場合 autosave: true の時 子モデルごと新規作成 子モデルごと更新 子モデルにバリデーションエラ…

実装速度を向上させるためのセルフリファインメント

セルフリファインメントとは なぜセルフリファインメントなのか? どうやるか 具体例 最後に 実装速度を向上させる目的で最近個人的にやっている「セルフリファインメント」について紹介。 セルフリファインメントとは 「セルフリファインメント」というのは…

timecopはどのようにして時を止めているか

最初に結論 想定するケース コードリーディング 規模感の把握 .freeze の定義元へ向かう .send_travel の定義元へ向かう instance を調べる #travel の定義元へ向かう .send_travel を再確認 :thinking_face: time_extensions まとめ timecop というgemがど…

ruby-buildとrbenvのプラグイン機構

ruby-buildとは何か rbenv install コマンドはruby-buildが提供している rbenvはどのようにしてプラグインを読み込むか おまけ:さらに深ぼってみる まとめ 参考 前回の記事 に続いてrbenvネタ。 今回は、ruby-buildとrbenvの関係について。 ruby-buildとは…

rbenv rehashをちゃんと理解する

rbenv rehashとは何か rbenv initがやっていること いつ rbenv rehash を実行すればいいか 実際に試してみた rehashをいつ実行するか?の考察 まとめ 雰囲気で使っているものをちゃんと理解しようという取り組みを時々しており、今回は複数のバージョンのrub…

NERDTree上でファイルの新規作成、リネーム、削除をする

vim

小ネタ。 NERDTree というファイルエクスプローラ用のVimプラグイン上でファイルの新規作成やリネーム、削除をする方法をgif動画付きでご紹介。 ファイルの新規作成 NERDTreeを起動 → m キーでNERDTree menuを開く → a キーで新規作成 ファイルのリネーム NE…

ISUCON10予選にチームモツ鍋として参加した

事前準備 当日朝 予選開始 Botからのリクエストの遮断 MySQLサーバを分離 indexの追加 POST /api/estate/nazotte の効率化 レプリケーションの設定 アプリケーションサーバの複数構成化 バルクインサート 残り数分 全体を通しての感想 2020年9月12日に開催さ…