- Ruby / Rails関連
週刊Railsウォッチ: Rails 8.0 Beta 1リリース、Railsのメンテナンスポリシー更新ほか(20241024)
こんにちは、hachi8833です。Railsウォッチの間が空いてしまい申し訳ありませんでした🙇🙇。キャッチアップ頑張ります🙏。
🔗 Rails
🔗 Rails 8.0 Beta 1がリリース(Rails公式ニュースより)
つっつきボイス:「9/26〜9/27に開催されたRails Worldの会期中にRails 8.0 Beta 1がリリースされました」「"No PaaS required"についてリリース記事ではあまり詳しく触れられていないけど、37signalsがやっているのと同じようにKamal 2を使ってRailsアプリをセルフホステッドな環境でもすっと動かせるよ、という意味なのかな🤔」「Kamal 2はこの後でもう少し触れる予定です」
Rails 8 Beta 1: No PaaS Required has been released! Everything you need to go from HELLO WORLD to production on any Linux server, whether Cloud VM or a Pii in your closet, is included. https://t.co/1PLKRoLZBz
— DHH (@dhh) September 27, 2024
"Rails 8 Beta 1: No PaaS Required"がリリースされました!Hello Worldアプリを動かすときも、Linuxサーバー上で本番アプリを動かすときも、デプロイ先がクラウドVMでも押入れに置いたPii(訳注: これはRaspberry Piか何かのつもりだったと想像しています)でも、必要なものはすべて提供します。
同ポストより
参考: Platform as a Service(PaaS)- Wikipedia
「RailsはもともとPaaS以外のところにもデプロイできるものだと思うので、Rails 8のKamal 2やThrusterを使えば、HerokuのようなPaaSを使わなくても楽にデプロイできるよ、というのを強調したかったのかもしれませんね」「そんな気もしますね: Thrusterが何だったのか忘れかけてたんですが、nginx的に使えるHTTP/2プロキシでしたね(ウォッチ20240328)」
「なお、以下のwillnetさんの記事は今年1月のものですが、Rails 8のマイルストーンはこのときと大きくは変わっていないようなので参考までに貼りました↓」
参考: Rails8.0.0マイルストーンの現状 - おもしろwebサービス開発日記チラシの裏
Rails 8 の概要が書かれていた。8 はDHHのシンプルを志向する姿勢がよく現れているなと思った。というか今回は、ほぼそれしかない気もする。
シンプルになっているが、やれることが減っている訳ではないのがまた凄いところ。https://t.co/Ffyq2EsE3s
— 中谷 一郎 | ichiroc (@ichiroc) October 20, 2024
🔗 Railsのメンテナンスポリシーがより詳細になった
つっつきボイス:「先週のRailsセキュリティ修正記事↓でも触れましたが、Rails 7.2で更新されたメンテナンスポリシー(ウォッチ20240819)が、Rails Worldの会期中にRailsのメンテナンスポリシーがまた更新されました」
Railsセキュリティ修正がリリースされました: 7.2.1.1 / 7.1.4.1 /7.0.8.5 / 6.1.7.9
「お〜、メンテナンス終了期限を"最初のバージョンリリース後何年"という表示に加えて、公式のメンテナンス情報に具体的な期日も明示するようにしたのはいいですね👍」「新機能が半年に1回リリースされるようになったそうです」「こうやってメンテナーへの問い合わせを減らす努力も大事ですね: フレームワークを採用するときはこういうメンテナンス情報が詳しく示されているかどうかも決め手のひとつになるので」
🔗 Kaigi on Rails 2024が今週開催
- イベント: Kaigi on Rails 2024
-
公式YouTubeチャンネル: Kaigi on Rails - YouTube -- 便利情報も上がっています
https://twitter.com/kaigionrails/status/1846883878675665401
/
お昼に開催予定のワークショップについての情報を公開しました。参加できる人数には限りがございますので、興味のある方はお早めにお申し込みください。💻
\https://t.co/pQZf6r0gbn#kaigionrails— Kaigi on Rails (@kaigionrails) October 9, 2024
つっつきボイス:「今年のKaigi on Rails 2024の開催が近づいてまいりました」「ボク行きます〜」「私も」「今年はスロットが2つなんですね」「そういえば今回の会場は船で有明桟橋からでもアクセスできるのを思い出しました」
参考: 有明桟橋(有明客船ターミナル) | 桟橋・乗船場所 | 貸切クルージングなら東京湾アニバーサリークルーズ
🔗 Rails World 2024の動画が公開(Rails公式ニュースより)
つっつきボイス:「遅ればせながら,Rails World 2024のまとめ記事と、DHHとMatzの対談動画です」「Aaron Patterson(@tenderlove)さんがクロージングのキーノートを務めてたんですね」「Railsルーターの"30 minites of bullshit"って何なのか気になる」「Railsのルーティングはいろいろ大変なので、そういうトピックなんでしょうね」
🔗 Rails公式のコミュニティアンケート2024の結果発表(Ruby Weeklyより)
つっつきボイス:「Rails公式が今年5月にアナウンスしていた、Planet Argon社によるRailsアンケート結果が発表されていました」「国のリストに日本が載ってないということは、日本の人はあまりアンケートに答えてなかったんだろうか、惜しい」
「CIはGitHub Actionsが1位なのね」「昔CIっぽいものを自作したこともあったな〜」「2016年まではCI使っていないところがトップだったとは!」「データベースでSQLiteが上昇している」「エディタはVS Codeが1位だけどVimの人も結構多い」「結果を見始めているうちにページがすごく長いことに気づいたので、後で見てみよう」
✍️ In the 2024 Rails Community Survey, we asked, "Which JavaScript libraries or frameworks do you use with Rails?"
📋 Survey said...
👑 Stimulus has dethroned React as the most popular JavaScript library/framework used alongside Rails. https://t.co/fpBIZdFEcS pic.twitter.com/OmpVsNMc16— Planet Argon (@planetargon) September 25, 2024
🔗 スライド「Rails vs Node.js - 最終章 Prisma」
今日の発表資料、先週からずっと書いてた 「Rails vs Node.js - 最終章 Prisma」です。
対戦よろしくお願いします。#cloudflareug_hndhttps://t.co/uNNwsCdidl— mizchi (@mizchi) October 2, 2024
つっつきボイス:「フロントエンドで有名なmizchiさんのこのスライドはいい話がいっぱいでよかった👍」「以下の動画は発表後に再度追いかけたものみたいで3時間ぐらいあるんですが、これもいろいろ参考になりました」「このスライドでmizchiさんの前歴を初めて知ったんですが、昔はRailsを結構長くやっていたんですね」
「"Railsガイドの完成度がすごい"としきりに感心していたのが個人的に嬉しかったです」「フロントエンドというかNode.js方面はRailsのような"フルスタック"という考え方ではありませんし、さまざまな開発者や組織が自分たちのベストプラクティスとして各種ライブラリの組み合わせ事例やそのチュートリアルドキュメントを公開することはあっても、Railsのような"みんなが同じライブラリスタックの組み合わせを使おう"という方向には今後もならないんじゃないかな」「そんな気がします」
「Node.js方面を使うとプロジェクトごとにセットアップが大きく違うことになるので、自分のようにたくさんのプロジェクトを扱っているとライブラリの細かな違いがつらくなってくるんですが、そういうつらさが解消されればRailsからNode.jsに移行してもいいという気持ちはあるかも」
🔗Rails: 先週の改修(Rails公式ニュースより)
🔗 Solid CableとSolid CacheがRails 8のデフォルトになり、Redisがdevcontainerのデフォルトでなくなった
- PR: Add Solid Cable by dhh · Pull Request #52889 · rails/rails
-
PR: Add Solid Cache (and get ready for Solid Queue) by dhh · Pull Request #52790 · rails/rails
つっつきボイス:「今週はRails 8に関連する大きめのトピックを追いかけることにしました」「Solid CacheとSolid QueueがRails 8でデフォルトになるのは知ってたけど、新しくSolid CableがAction Cable用アダプタとして入るのか(#50480)」「RedisみたいなのがなくてもAction Cableを使えるようにするんですね」「これでSolidで始まるライブラリが3兄弟になった」
「それに関連して、Rails 8のdevcontainerにはデフォルトでRedisをインストールしないようになったそうです」「この流れでいけば当然そうなるでしょうね」
- PR: Do not include redis by default in dev container by andrewn617 · Pull Request #52934 · rails/rails
「今後はSolid3兄弟を使えという話なんでしょうか?」「デフォルトがそれらになったおかげでRedisを用意しなくてもすぐ使えるというのがメインで、パフォーマンスやスケールが必要ならいつでも別のものに差し替えられるということだと思います」「実際、Solid Cacheみたいなものをメインと同じデータベースで使うと負荷上昇につながる可能性もあるので、無理にSolid系ライブラリを使わなくてもいいでしょうね」
「Redisサーバーを導入・運用するコストは結構大きいので、最初はRedisをセットアップしなくてもSolid Cache/Query/Cableが使えるようになってくれば、特にプロジェクトを最初に立ち上げるときに依存関係を増やさずに済むので、実際ありがたいですね👍」
🔗 RailsがKamal 2に対応
つっつきボイス:「1個のRailsモノリスアプリをファットにしすぎないために、ある程度のドメインや対象機能群ごとに複数のRailsマイクロアプリを扱う構成にして、さらにドメイン層の共通化されるモデルのソースコードやgemバージョンを共有・同期するために、複数のRailsアプリ同士のバージョン依存を維持したまま同時にデプロイしたいことがあるんですよ: Kamal 2のようなデプロイツールはそういう場合に便利なはずですし、実際必要だと思います👍」
「Kamalは当然ながらRails以外でも使えますけど、Next.jsでも評判がいいというポストを見かけました↓」「JavaScriptベースのサーバーサイドアプリには、たしかにセルフホステッドな環境への共通デプロイツールには広く使われているものがなさそうですね」「結局VercelとかCloudFlareあたりに金払って使ったりしがちですよね」「Kamal 2によって特にエンタープライズ方面で使いやすくなりそうですし、特定のホスティングサービスにも縛られにくくなるでしょうね」
おおお!
Next.jsからもKamal 2は良いぜ!ってコメントが出た
私の方はNext.js + Kamal 2 + SQLiteの記事を執筆中。早く仕上げたい! https://t.co/0dslwuwjgD
— Naofumi Kagami - 🇵🇸 lives matter (@naofumi) October 9, 2024
「こちらの記事も見つけました↓」「ところで、インフラに詳しくないと公言してしまうレベルの人が今の時代にVPSで新規にサーバー公開するのはセキュリティ面のリスクが高いので、そもそもあまり推奨しない方がよいのかも?」「それド正論ですよね😆」
「Kamal 2 を使い、インフラに詳しくない人でもNext.jsを269円のVPSにデプロイできるよう、説明してみる」を公開しました
Railsworld2024で発表されたKamal 2を使っています
手軽で安価ですが、Dockerを使って本格的なblue/greenゼロダウンタイムデプロイをやるやつです!https://t.co/OGxhI9wPZQ
— Naofumi Kagami - 🇵🇸 lives matter (@naofumi) October 2, 2024
🔗 Rails 8からアセットパイプラインがPropshaftだけになる
つっつきボイス:「プルリクのタイトルはひねってますが、ついにRails 8からPropshaftが唯一のアセットパイプラインになるそうです」「rails new
のオプションからSprocketsが消えるんですね」「長年お疲れさまでした👋」
🔗 PostgreSQLとMySQLのfloat関連改修
カラムのショートハンドメソッド
unsigned_float
とunsigned_decimal
を非推奨化。MySQL 8.0.17以降は、 FLOAT型、DOUBLE型、DECIMAL型の
UNSIGNED
属性が非推奨化された。
今後はこれらのカラムではシンプルなCHECK制約を検討すること。MySQL :: MySQL 8.0 Reference Manual :: 13.1.1 Numeric Data Type Syntax
Ryuta Kamizono
同Changelogより
PostgreSQLの浮動小数点で
float4
とfloat8
が区別されていなかったのを区別するようになった。修正: #52742
Ryota Kitazawa, Takayuki Nagatomi
同Changelogより
つっつきボイス:「その他のプルリクのうち、DBの浮動小数点の改修です」「MySQLにunsigned_float
とunsigned_decimal
があったとは知らなかった」
「今までのPostgreSQLはfloat8
を選んでもfloat4
になっていたのをfloat8
も使えるようにしたんですね↓」
# activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L674
- m.register_type "float4", Type::Float.new
- m.alias_type "float8", "float4"
+ m.register_type "float4", Type::Float.new(limit: 24)
+ m.register_type "float8", Type::Float.new
参考: PostgreSQL 16ドキュメント: 8.1. 数値データ型
🔗Ruby
🔗 Ruby 3.4.0 preview2リリース(Ruby公式ニュースより)
つっつきボイス:「お、もうそんな季節になったんですね」「クリスマスまでもうすぐか〜」「frozen_string_literal
の扱いはいろいろ議論されてきたけど、-W:deprecated
オプションを付けてRubyを実行すればfrozen_string_literal
コメントなしで文字列が改変されたときに非推奨警告を出せるようにしたんですね(#20205): gem側が対応する期間も必要なのでこういう対応になったのはわかる」
🔗 Rubyのデフォルトパーサーがparse.yからPrismに切り替わった(Ruby Weeklyより)
つっつきボイス:「以前からそういう流れになっていましたけど、公式にPrismに移行するんですね: 大きな変更だけど、パーサーが読みやすくなるのはありがたい👍」「巨大なparse.yともついにお別れ👋」
今週は以上です。明日のKaigi on Railsでお会いしましょう。
バックナンバー(2024年度第3四半期)
週刊Railsウォッチ: Rails 7.2でメンテナンスポリシー更新、書籍『Ruby on Railsパフォーマンスアポクリファ』ほか(20240819)
- 20240808後編 puma_worker_killer、bundle_update_interactive gemほか
- 20240807前編 Rails 7.2 RC1がリリース、ストリーミングのレスポンス処理をRack 3で行うほか
- 20240709 シャーディング用メソッドを追加、localsマジックコメント修正ほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)