読者です 読者をやめる 読者になる 読者になる

良いあそなすちゃん

良い方のあそなすちゃんです!

2つのアプリケーションの間をつなげる人

https://github.com/asonas/proctor

新しいシステムの方でレコードが1件作成されると古い方のシステムにAPIをコールするみたいなやつ
新しいシステムと古いシステムで一部のモデルが対になっているので、それぞれ新しいシステム側のモデルの after_create で古いシステムのAPIをコールする
新しいシステムの方に古いシステムに関わるコードをなるべく入れたくない(モデルにそういうのをズラズラっと書きたくない)
古いシステムはレガシーだけど、様々なアレコレが絡み合う状態で集計処理とかなんやかんやエンジニアが喜ぶ場面とは程遠いところで良い価値を生み出しているので全部移行するまでは新しいシステムから古いシステムに集計お願いね、みたいなことを綺麗に申し立てる
古いシステムに対してAPIをコールするときのHTTPメソッドがgetなのかpostなのか、それぞれのモデルで知っていてほしい
例えば、古いシステム側に対して、Favoriteモデルのレコード作成時はGETだけど、CommentモデルのときにはPOSTなど (そもそもレコードを作成したのにGETなん?みたいなのは置いておく。そういうもんだ)
proctorから叩くAPIのパスもモデルから教えるのはとても難儀しそうだったので、こんなかんじでレコードからAPIのパスを取得する (書いてて思ったけど、ここは別のメソッドにしてもよさそう。)
古いシステムの方が用意してあるAPIの情報に関してはなるべくsettingslogicを使ってまとめておきたい
クラス名がProctorなのは代理人とか監査員みたいな意味をこめた。Agentとかでもいいと思ったんだけど、古いシステムへのつなぎ込みみたいなのは今後抹殺されていく運命だと思うので、『なるべく使わない単語』かつ『それが独立した意味を持っていること』に注視した

20行とちょっとの短いコードだけど、そういう様々な気持ちを込めてつくりました