Litestream、意外な点で注意が必要

2025-10-09

Litestream を実際に Google Cloud で使ってみて引っかかったところを挙げておく。 なお、今回は以下の環境で試した結果を挙げている。 Google Cloud Run Jobs ( x86_64 Linux debian-slim ) litestream 0.3.13 2025-10-09 時点で最新は 0.5 なのだが、compaction エラーというログが出続けるので 0.3.13 で動作させた。 Litestreamとは Litestream - Streaming SQLite Replication benbjohnson/litestream: Streaming replication for SQLite. ...

more ...

EventarcとCloud WorkflowsでCloudサービス間を少しずつ連携させる

2025-09-27

クラウドピタゴラスイッチは好きですか。ぼくはきらいです。アレは下手に使うと無駄に複雑になってしまうと思う。でも、これくらいの使い勝手のものならむしろ好ましいのかも、と思える組み合わせもあるなと思うきっかけがあって、その時に利用したツール周りの話をまとめてみることにした。 Eventarc Eventarc Advanced になると少し込み入った話が増えるので、いったん Standard で紹介しておく。 Eventarc の概要  |  Google Cloud Google Cloud はもともと各リソースが直接 Functions を叩いたり、Pub/Sub にメッセージを送信したり、event に対応したプログラムを実行する基盤があった それらの中に今も有...

more ...

moonを使って多言語monorepoを扱ってみた

2025-09-21

RubyとJSが混ざるmonorepoに何を使ったらよいのか問題 monorepo 向けのツールって JavaScript runtime が基本になりがち 、それ以外は Bazel とかすごく大掛かりなツールになりがち JavaScript ベースの monorepo ツールは package と workspace の話になりがち で、なんかちょっと違うんだよなぁとずっと悶々としていて、先日ようやく Ruby 向けの monorepo ツールを見つけた。 kjellberg/monoz: Command line tool for managing ruby monorepos. これはこれで Ruby に閉じてるならアリかもと思った。特に複数のプロジェクト...

more ...

公開のmonorepoでbundler頼みでgemをインストールする

2025-09-09

忘れちゃうのでメモ。 やりたいこと コードを分離したい。アプリの中に直接埋もれさせるのではなく、ある程度の汎用性を持たせて切り出しておきたい コードを分離するたびにリポジトリを増やしたくない rubygems.orgにいちいち公開したくない してもいいんだけど、単に仕事で使いたいだけ x 公開するアカウントの管理とか面倒 Gemfileでmonorepo内の特定のパス以下のgemをインストールする 以下の書き方を見つけた。 Bundler: How to install gems from git repositories gem 'cf-copilot', git: 'https://github.com/cl...

more ...

RubyのMethodオブジェクトをJavaScriptのfunctionと比較する

2025-08-28

ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(1) (2025-08-23) | あーありがち ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(2) (2025-08-24) | あーありがち ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(3) (2025-08-27) | あーありがち これ作ってる時に知ったこととその後思ったこと。 RubyのMethodオブジェクトって知ってる? こういうことができるもの。 class Foo def initialize(external_method) @external_me...

more ...

ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(3)

2025-08-27

前回 ActiveRecordとdry-operationでバッチジョブを管理してみる(2) (2025-08-24) | あーありがち の続き。 くどいけど、コード例は出てくるけど、設計を考える話。今回は ActiveRecord や Dry::Operation を利用した書き味の部分とは別に考えないといけない大事な屋台骨の部分。排他制御、全体の統合、エラー処理について。 排他制御をどうするか これ最初は ActiveRecord でロックしようとしていたんだけど、 ActiveRecord では待つことしかできず、「ロックされているのでただちに実行を失敗扱いにして中断する」といった制御ができない SQLite ではデータベース全体でロックされてしまう こ...

more ...

ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(2)

2025-08-24

前回 ActiveRecordとdry-operationでバッチジョブを管理してみる(1) (2025-08-23) | あーありがち の続き。 今回は dry-operation を利用して実際のジョブの内容をどのように記述していくか、何がどのように記録されてどのように「再開」を支援するか。 ジョブの中身の定義と失敗をdry-operationで扱う 最近お気に入りの dry-operation でジョブの中身の定義を行うことにした。dry-operation については以下で紹介しているが、 Ruby de Railway Oriented Programming - Speaker Deck dry-operationのススメとエラー情報をViewまで持っ...

more ...

ActiveRecordとdry-operationでバッチジョブをお手軽に管理してみる(1)

2025-08-23

今回はどういう考えでどういうものをどう設計していったかの話と、いちばんの基本部分の DB スキーマと ActiveRecord の役割の話を整理する。 背景 以前から UI に関係しない定期的で時間の掛かるいわゆるバッチ処理についていろいろ思うところがあった。 ActiveJob が難しい Rails の裏に回ってくれてリトライもできるけどそれだけ 失敗したらリトライすることはできるが、単純に一連の流れをリトライしてしまうと例えば二回処理してはいけない部分が二回処理される可能性もある というかそもそも queue ベースの処理って管理が難しい ActiveJob は queue ベースになってい...

more ...

About

例によって個人のなんちゃらです