Ruby

Ruby 2.7 の変更点 - Dir / File / IO / Pathname

Ruby 2.7 アドベントカレンダーの15日目の記事です。 qiita.com Dir Dir.glob / Dir.[] : NUL文字を含むとエラー File File.extname : 「.」で終わる文字列が「.」を返す IO IO.set_encoding_by_bom 追加 Pathname Pathname.glob : 引数追加 Pathname 関数 :…

Ruby 2.7 の変更点 - Array / Enumerable / Enumerator

Ruby 2.7 アドベントカレンダーの14日目の記事です。 qiita.com Array Array#intersection 追加 Enumerable Enumerable#filter_map 追加 Enumerable#tally 追加 Enumerator Enumerator.produce 追加 Enumerator::Lazy#eager 追加 Enumerator::Yielder#to_pro…

Ruby 2.7 の変更点 - irb

Ruby 2.7 アドベントカレンダーの13日目の記事です。 qiita.com irb irb がめっちゃ便利になりました。 まずは Ruby 2.7.0-preview3 リリース の中の動画を見るのが良いでしょう。 readline 互換の pure Ruby ライブラリ reline が標準ライブラリとして加わ…

Ruby 2.7 の変更点 - rescue 節の優先度 / 特異クラス内定義の yield

Ruby 2.7 アドベントカレンダーの12日目の記事です。 qiita.com rescue 節の優先度 代入文で後置 rescue を使用した時に多重代入の時だけ突飛な動きをしてましたが、 a = raise rescue 123 a #=> 123 a = raise rescue [123, 456] a #=> [123, 456] a = b = …

Ruby 2.7 の変更点 - Unicode 12.1 / $SAFE と汚染オブジェクト

Ruby 2.7 アドベントカレンダーの11日目の記事です。 qiita.com Unicode 12.1 Unicode 12.1 に対応しました(2.6.3 から対応してます)。 Ruby 2.6.2 p "㋿".unicode_normalize(:nfkd) #=> "\u32FF" Ruby 2.7 p "㋿".unicode_normalize(:nfkd) #=> "令和" $SAF…

Ruby 2.7 の変更点 - コメント行を挟んだメソッド呼び出し / ヒアドキュメント

Ruby 2.7 アドベントカレンダーの10日目の記事です。 qiita.com コメント行を挟んだメソッド呼び出し メソッド呼び出し時には . の前後に改行することができます。 "hoge". upcase "hoge" .upcase ですが、その間にコメント行を挟むとエラーになっていました…

Ruby 2.7 の変更点 - 「...」で全引数渡し

Ruby 2.7 アドベントカレンダーの9日目の記事です。 qiita.com 「...」で全引数渡し メソッド内から別のメソッドを呼び出す際に、... で今のメソッドに渡された引数そのまま渡すことができるようになりました。 ブロックも含めてすべて渡されます。 def hoge…

Ruby 2.7 の変更点 - self でのプライベートメソッド呼び出し

Ruby 2.7 アドベントカレンダーの8日目の記事です。 qiita.com self でのプライベートメソッド呼び出し プライベートメソッドは、obj.hoge の形式で呼び出そうとしたら普通はエラーになるのですが、self.hoge の場合はエラーにならなくなりました。 class A …

Ruby 2.7 の変更点 - $; と $, の設定が非推奨

Ruby 2.7 アドベントカレンダーの7日目の記事です。 qiita.com $;, $, の設定が非推奨 $; は String#split で引数を省略した時(または nil を指定した時)に使用されるデフォルトのセパレータです。 $; のデフォルト値は nil で、「先頭と末尾の空白を取り除…

Ruby 2.7 の変更点 - 始端省略 Range リテラル

Ruby 2.7 アドベントカレンダーの6日目の記事です。 qiita.com 始端省略 Range リテラル 範囲を表す Range オブジェクトはリテラルで 3..9 のように書くことができます。 Ruby 2.6 で終端を省略することができるようになりました。 range = (3..) range.begi…

Ruby 2.7 の変更点 - ブロックを伴わない proc / lambda

Ruby 2.7 アドベントカレンダーの5日目の記事です。 qiita.com ブロックを伴わない proc / lambda 今までブロックを伴わない proc / lambda はそのメソッドの呼び出し側で指定されたブロックを Proc オブジェクトとして返していました。lambda は warning が…

Ruby 2.7 の変更点 - Numbered parameter

Ruby 2.7 アドベントカレンダーの4日目の記事です(が、書いてるのは12月7日です)。 qiita.com Numbered parameter 2.6 までは、ブロックに渡される引数を受け取るためには | で明示的に変数を宣言する必要がありました。 [5, 2, 4, 1, 3].sort { |a, b| a <=…

Ruby 2.7 の変更点 - キーワード引数

Ruby 2.7 アドベントカレンダーの3日目の記事です。 qiita.com キーワード引数 Ruby は 2.0 から次のような感じでキーワード引数を使用することができるようになりました。 def hoge(k: 123) p k end hoge() #=> 123 hoge(k: 456) #=> 456 hoge({k: 789}) #=…

Ruby 2.7 の変更点 - パターンマッチング

Ruby 2.7 アドベントカレンダーの2日目の記事です。(更新が遅いのは仕様です) qiita.com パターンマッチング パターンマッチングは Ruby 2.7 での目玉機能と言ってもいいでしょう。 ただし現時点では experimental で、使用すると次のメッセージが出力されま…

Ruby 2.7 の変更点 - 復活したものや入りそうで入らなかったもの

Ruby 2.7 アドベントカレンダーの1日目の記事です。 qiita.com Ruby は毎年クリスマスにバージョンが上がります。 今年も順調にいけば 12/25 に Ruby 2.7 がリリースされる予定です。 2.7 がリリースされるまで毎日少しずつ変更点を見ていきます。 ソースは …

Ruby 2.6 の変更点 - Matrix, RSS, その他, おわり

Ruby2.6アドベントカレンダーの25日目の記事です。 qiita.com 最終日になってしまいました。順調にいけばきっと本日 Ruby 2.6 がリリースされるはずです 最近の変更や、あまり興味のないものやよくわかってないものが残ったのでざっくりと紹介。 Matrix Mat…

Ruby 2.6 の変更点 - Coverage

Ruby2.6アドベントカレンダーの24日目の記事です。 qiita.com Coverage Coverage.start に :oneshot_lines キーワード引数追加 Coverage.result に :stop, :clear キーワード引数追加 Coverage.line_stub 追加 Coverage https://bugs.ruby-lang.org/issues/1…

Ruby 2.6 の変更点 - Net, ERB

Ruby2.6アドベントカレンダーの23日目の記事です。 qiita.com Net Net::HTTP に write_timeout 追加 Net::HTTPClientException が追加され、Net::HTTPServerException は非推奨 ERB ERB.new に :trim_mode と :eoutvar キーワード引数追加 erb コマンドの -S…

Ruby 2.6 の変更点 - URI, Set, Bundler

Ruby2.6アドベントカレンダーの22日目の記事です。 qiita.com URI URI::File 追加 Set Set#filter! 追加 Bundler Bunderが標準ライブラリに追加 URI URI::File 追加 https://bugs.ruby-lang.org/issues/14035 2.5 までは file: で始まる文字列をパースすると…

Ruby 2.6 の変更点 - Binding, flip-flop

Ruby2.6アドベントカレンダーの21日目の記事です。 qiita.com Binding Binding#source_location 追加 flip-flop 非推奨 Binding Binding#source_location 追加 https://bugs.ruby-lang.org/issues/14230 binding のファイル名と行番号を返します。 1: def ho…

Ruby 2.6 の変更点 - Numeric, BigDecimal

Ruby2.6アドベントカレンダーの20日目の記事です。 qiita.com Numeric Numeric#step が Enumerator::ArithmeticSequence オブジェクトを返す BigDecimal BigDecimal.allocate 削除 BigDecimal オブジェクトが frozen BigDecmial.new が非推奨 BigDecimal() …

Ruby 2.6 の変更点 - ENV, Struct, Random

Ruby2.6アドベントカレンダーの19日目の記事です。 qiita.com ENV ENV.to_h にブロックを渡すとキーと値を変換できる Struct Struct#to_h にブロックを渡すとキーと値を変換できる Struct#filter 追加 Random Random.bytes 追加 ENV ENV.to_h にブロックを渡…

Ruby 2.6 の変更点 - Time

Ruby2.6アドベントカレンダーの18日目の記事です。 qiita.com Time タイムゾーンサポート 東京五輪時間 Time タイムゾーンサポート https://bugs.ruby-lang.org/issues/14850 Time.new とか Time#getlocal は UTCからの時差を文字列("+09:00"等)か数値(秒数)…

Ruby 2.6 の変更点 - RubyVM::AbstractSyntaxTree

Ruby2.6アドベントカレンダーの17日目の記事です。 qiita.com RubyVM::AbstractSyntaxTree RubyVM::AbstractSyntaxTree Ruby スクリプトを解析して抽象構文木を作成するクラスが追加されました。 RubyVM::AbstractSyntaxTree.parse は引数の文字列をパースし…

Ruby 2.6 の変更点 - String

Ruby2.6アドベントカレンダーの16日目の記事です。 qiita.com String Unicode 11 対応 String#crypt が非推奨 String#split がブロックをイテレータとして使用する String Unicode 11 対応 https://bugs.ruby-lang.org/issues/14802 String#crypt が非推奨 h…

Ruby 2.6 の変更点 - Object と NilClass

Ruby2.6アドベントカレンダーの15日目の記事です。 qiita.com Object Object#=~ が非推奨 NilClass NilClass#=~ 追加 Object Object#=~ が非推奨 https://bugs.ruby-lang.org/issues/15231 Object#=~ があり、それが常に nil を返すためにプログラムのミスを…

Ruby 2.6 の変更点 - Range

Ruby2.6アドベントカレンダーの14日目の記事です。 qiita.com Range Range#step が Enumerator::ArithmeticSequence オブジェクトを返す Added Range#% 追加 Range#=== が #include? だけではなく #cover? も使う Range#cover? が Range オブジェクトも受け…

Ruby 2.6 の変更点 - Module

Ruby2.6アドベントカレンダーの13日目の記事です。 qiita.com Module Module#method_defined?, Module#private_method_defined?, Module#protected_method_defined? で継承されたものを含むかどうかを指定可能 Module Module#method_defined?, Module#privat…

Ruby 2.6 の変更点 - Method と Proc

Ruby2.6アドベントカレンダーの12日目の記事です。 qiita.com Method Method#<<, Method#>> 追加 Proc Proc#<<, Proc#>> 追加 Method Method#<<, Method#>> 追加 https://bugs.ruby-lang.org/issues/6284 このメソッドオブジェクトと他のメソッドやProc等(#c…

Ruby 2.6 の変更点 - KeyError, NameError, NoMethodError

Ruby2.6アドベントカレンダーの11日目の記事です。 qiita.com KeyError KeyError.new に :receiver, :key オプション追加 NameError NameError.new に :receiver オプション追加 NoMethodError NoMethodError.new に :receiver オプション追加 KeyError KeyE…