Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

週刊Railsウォッチ: Kamalはゲームチェンジャーになるか、Solid Queueで使われているfugitほか(20240423後編)

こんにちは、hachi8833です。後編が遅れてしまい申し訳ありません🙇

RubyKaigi 2024の公式パーティをはじめとするイベント募集が始まりました。

週刊Railsウォッチについて

  • 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ
  • 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄
  • お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏

TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

🔗Rails

🔗 Kamalはゲームチェンジャーになるか?(Ruby Weeklyより)


つっつきボイス:「SREの専門家としてKamalを評価した記事だそうです」「ざっと見たところ、アプリケーションデプロイ管理の仕組みの歴史というか経緯みたいなものを簡潔に説明していたり、Kamalがどういうユーザー層に刺さるのかみたいな話までが網羅的に書かれていてなかなか良い記事👍: マネージドサービスに委ねたいならKamalよりもECSとかの方が良いと思うけど、ロックインされたくないならKamalかなという感じ」

「従来Railsアプリなどのデプロイに使われてきたcapistranoを今後も使うかどうかは微妙ですし、自分たちにはDocker ComposeがあればデプロイできるKamalのようなツールで良かったのかもしれないという気持ちにはなりますね」「なるほど」「Kamalの方法自体は悪くないと思いますけど、コンテナを自分たちで管理することにはなりますし、自分はAWSを使うことも多いので、自分ならAWS Fargateのコンテナ管理システムに乗せることをまず考えるかも」

capistrano/capistrano - GitHub

参考: AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS

Kamal README: 37signalsの多機能コンテナデプロイツール(翻訳)

  • 管理やデプロイを深追いしたくない人や、現在使っているHerokuやFly.ioやRenderなどに特に不満がなければ、現状のソリューションを使うべき
  • パブリッククラウドが好きでなく、VPSやベアメタルへのホスティングをやりたいのであればKamalを試してみよう
  • すでにKubernetesを使っていて不満もなく、あるいはセットアップが複雑ならば、当面そのままにするのが賢明そう
  • アプリケーションの利用量が急増してインフラを頻繁に自動または手動スケーリングしなければならないのであれば、Kubernetesを検討すべき(まだであれば)
  • Kubernetesが好きでないor難しすぎると思うのであればKamalが合うかもしれないのでぜひチェックすべき
    同記事より抜粋・要約

🔗 fugit: さまざまなスケジューリング構文を解釈するツール

floraison/fugit - GitHub


つっつきボイス:「fugitはSolid QueueのREADMEで言及されていて知りました↓」

Solid Cache README: DBベースのキャッシュストア(翻訳)

「fugitはflorというRuby製ワークフローツールにcron風の構文やDurationなどでスケジュールを渡したりできる↓: まさにSolid Queueでやりそうな処理だし、GoodJobやdelayed_cron_jobでもfugitが使われているのね」「'every day at noon'はSlackにも似たようなスケジューリング機能がありますね」

# 同リポジトリより
require 'fugit'

Fugit.parse('0 0 1 jan *').class         # ==> ::Fugit::Cron
Fugit.parse('12y12M').class              # ==> ::Fugit::Duration

Fugit.parse('2017-12-12').class          # ==> ::EtOrbi::EoTime
Fugit.parse('2017-12-12 UTC').class      # ==> ::EtOrbi::EoTime

Fugit.parse('every day at noon').class   # ==> ::Fugit::Cron

floraison/flor - GitHub

🔗 react_on_railsが14.0.0にメジャーアップデート(Ruby Weeklyより)

shakacode/react_on_rails - GitHub

参考: Release 14.0.0 · shakacode/react_on_rails


つっつきボイス:「react_on_railsがメジャーアップデートされてRuby 2.7以前のサポートを打ち切ったそうです」「メンテナンスは活発なようなので、react_on_railsを既に導入していたところはしばらくは安心できそうですけど、新しいRailsでサポートが廃止されたWebpacker/Shakapackerに依存するgemなので、いずれにしろ先細り感はありますね」「それもそうですね」「react_on_railsを剥がしたいプロジェクトは今の時代だと結構多いんじゃないかな」

shakacode/shakapacker - GitHub

Rails: Webpacker→jsbundling-rails+webpackアップグレード手順(翻訳)

🔗Ruby

🔗 Vernier: Rubyの次世代プロファイラ(Ruby Weeklyより)

jhawthorn/vernier - GitHub


つっつきボイス:「CRuby 3.2.1以降を対象とした次世代プロファイラだそうです」「このvernierから出力したJSONをこのVernier Profilerやtendeloveさんのprofilerに渡すとこんな感じで表示できるようですね↓」


Ruby/Vernier – 2023/9/6 5:16:19 UTC (public) – Firefox Profilerより

tenderlove/profiler - GitHub

参考: バーニヤ - Wikipedia

🔗 RubyGemsはxz/liblzmaバックドアの影響を受けていない(Ruby Weeklyより)


つっつきボイス:「先週xzのバックドアが騒ぎになっていましたけど、RubyGem.orgが全gemをスキャンして、liblzmaが含まれていないことを確認できたそうです」「RubyGem.orgのDockerfileにも混入はなかったことが確認できてよかった👍」

参考: XZ Utils バックドア — 知っておくべきこと、できること | Akamai

🔗 clipboard: マルチプラットフォームで使えるクリップボード操作gem(Ruby Weeklyより)

janlelis/clipboard - GitHub


つっつきボイス:「クリップボードにアクセスできるgemですけど、マルチプラットフォームを謳っているのが珍しいですね」「WindowsのWSLやLinuxのGtk+に加えてCygwinでも使えるのね」

参考: Cygwin - Wikipedia

🔗 その他Ruby

つっつきボイス:「やきとりいさんの著書が小学校の国語の教科書で引用されたそうです🎉」「CRubyのソースコードなので、映っているのはRubyではなくC言語のコードですけどね」


「ruby-lspのソースコードを読むという企画は面白そう👍: ruby-lspは起動後に常駐するのでVS Codeとかから使うとマジで速いですよ」

Shopify/ruby-lsp - GitHub


後編は以上です。

バックナンバー(2024年度第2四半期)

週刊Railsウォッチ: ジョブのエンキューをトランザクション完了時まで自動先延ばしほか(20240416前編)

ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。

Ruby Weekly


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。