Ruby 3.4 リリースのハイライト:主な機能とアップデート
Ruby の伝統どおり、コア チームは 2024 年 12 月 25 日に Ruby 3.4 をリリースしました。 私たちと同じように Ruby が大好きなら、Ruby 3.4 の新機能が気になるでしょう。このリリースには大きな変更はありませんが、いくつかの非常に優れた点に注意してください。

まず、言語の変更点のいくつかを詳しく見てみましょう。
言語の変更
言語の変更は、ほとんどの Ruby 開発者にとって最も直接的に関係のある変更です。それぞれを簡単に見てみましょう!
凍結された文字列リテラル
Ruby を少しでも書いたことがある人なら、おそらく次で始まるファイルを見たことがあるでしょう:
# frozen_string_literal: true
上の例はマジック コメントです。 そして実際には、Ruby インタプリタにとって意味があるのです。このコメントは、このファイル内の各文字列を freeze であるかのように扱うようにインタープリタに指示します。 それに呼びかけた。このマジック コメントを使用してファイル内の文字列を変更しようとすると、実行時エラーが発生します。
Ruby 3.4 では、 文字列が機能します。 デフォルトで凍結されているかのように。それらを変更しようとすると、エラーではなく非推奨の警告が表示されます。 Ruby の将来のバージョンでは、デフォルトの凍結された文字列リテラルを変更しようとすると例外が発生して強制されるようになります。この移行期間により、Ruby 開発者はアプリを移行する時間が与えられます。
デフォルトのブロックパラメータ
Ruby 3.4 では、短いコード ブロックをよりクリーンにするためのデフォルトのブロック パラメーターが導入されています。
Ruby 2.7 より前では、配列の各要素を each で出力していました。 メソッドは次のようになります:
[1, 2, 3].each { |item| puts item }
Ruby 2.7 では、名前を付ける必要をなくすために、番号付きパラメータが導入されました。 Ruby 2.7 以降では、同じコードを次のように記述できます。
[1, 2, 3].each { puts _1 }
Ruby 2.7 の改善はより単純ですが、正確には明確ではありません。この Ruby 構文に慣れていない場合は、ここで何が起こっているのか理解するのに苦労するかもしれません。 Ruby 3.4 では、これと同じことを行うためのさらに優れた方法が導入されています。
[1, 2, 3].each { puts it }
キーワード スプラッティング nil
3.4 より前の Ruby バージョンでは、double splat 演算子 (**) を使用します。 ) nil を使用 TypeError が発生しました 。 nil なので、これは理にかなっています。 暗黙的にハッシュに変換できませんでした。
Ruby 3.4 ではこれに簡単な変更が加えられており、暗黙的に nil が変換されます。 ハッシュに変換します。 ** を呼び出す nil の場合は、** を呼び出すのと同じになります。 空で ハッシュ。
コアクラスの更新
コア クラスの更新は、言語が変更されるほど Ruby 開発者に直接関係するものではありませんが、理解する価値は間違いなくあります。
Exception#set_backtrace
Ruby 問題トラッカーの機能リクエストには、Ruby 3.4 でのこの変更の前に文字列の配列を使用したバックトレースの設定が「非可逆」であると説明されていました。以前は、#backtrace_locations で例外が nil を返していました .
Ruby 3.4 では、Exception#set_backtrace Thread::Backtrace::Location を受け入れます Backtrace を再構築できるように配列します。 インスタンスであり、完全に機能する例外があります。
範囲#サイズ
Range#size Ruby 3.4 では新しい動作もあります。 size の範囲の場合 が呼び出されているのは反復可能ではないため、Ruby は TypeError をスローします。 。これは、size を呼び出している場合にのみ気付く動作の小さな変更です。
Ruby 3.4 でのその他の新しい変更点
Ruby 3.4 のもう 1 つの小さな変更は、使用しないブロックに渡されるメソッドに対するものです。冗長モードで実行しているときに、ブロックを使用しないメソッドにブロックを渡すと、Ruby は警告をスローするようになりました。
Ruby 3.4 で Array.each のパフォーマンスが向上したことも嬉しいかもしれません。 実装の書き換えが原因です!
最後に、エラー メッセージとバックトレースの表示方法に関するもう 1 つの更新です。 Ruby は、関連する場合にバックティックではなく一重引用符を使用し、メソッド名の前にクラス名を表示するようになりました。
Ruby 3.4 へのアップグレード
ほとんどの人にとって、Ruby 3.4 へのアップグレードはそれほど大きなことではありません。最も労力がかかる部分は、不要な凍結された文字列マジック コメントをすべて削除することです。 Ruby 3.4 の新機能をすべて活用するために時間をかけてアップグレードすると成果が得られますので、遅らせないでください。
そして、忘れないでください。Ruby のニュースや、このようなチュートリアルをさらに受信するには、Honeybadger ニュースレターに登録してください。
-
Rubyでアプリケーションサーバーが必要なのはなぜですか? (プーマのように)
rails serverを実行すると実行を開始するこの「Puma」とは何ですか ? アプリサーバーです! アプリケーションサーバーとは何か、なぜそれらが必要なのかを例を挙げて説明しましょう。 アプリケーションサーバーについて Rubyで新しい光沢のあるWebアプリケーションの構築を開始したとします。 そして、コードを書く前に… デフォルトの「ようこそ」ページを見るためだけでも、ブラウザに読み込まれることを確認したい。 したがって、ブラウザを開いて、localhost:3000を指定します。 、または多分localhost:4567 シナトラを使用している場合。 それではどうなりま
-
Rubyで環境変数を使用する方法
環境変数はキーと値のペアであり、次のようになります。 KEY=VALUE これらの変数を使用して、コンピューター内のすべてのプログラム間で構成オプションを共有します。 そのため、それらがどのように機能するか、およびENVを使用してRubyプログラムからそれらにアクセスする方法を学ぶことが重要です。 特別な変数。 環境変数の例 : デフォルトのエディターの構成 宝石の場所をRubyに伝える(GEM_PATH / GEM_HOME ) APIキーを、ソース管理(git)にコミットせずにアプリケーションに渡す オペレーティングシステムがバイナリファイル(Windowsでは.exe)を検