Ruby

2020/10/22 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 あくまでも『わたしが気になったチケット』で全ての bugs.ruby のチケットを載せているわけではありません。 先週のまとめ [reline] Suppress callba…

2020/10/15 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 あくまでも『わたしが気になったチケット』で全ての bugs.ruby のチケットを載せているわけではありません。 先週のまとめ [#3626] Add Ractor.recei…

reline で printf デバッグするときのライフハック

今日の Toyama.rb で reline のデバッグするときの便利機能を聞いたので覚書。 reline を起動した状態で reline 自体を printf デバッグすると表示が崩れてしまうのでその場合のライフハック。 端末を2つ用意する デバッグ出力用と実際に reline の入力用の2…

2020/10/08 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 あくまでも『わたしが気になったチケット』で全ての bugs.ruby のチケットを載せているわけではありません。 先週のまとめ [Feature #17208] Add Set…

Kaigi on Rails STAY HOME Edition で登壇した

完全に勢いで CFP を出したら奇跡的に通ったのでエモい話をしました。 ActiveRecord と書いてあるんですがあんまり ActiveRecord の機能とかの解説はなくて『ActiveRecord を読むときに何に気をつけているのか』みたいな内容です。 ActiveRecord の歩み方 反…

Ruby 2.7.2 がリリースされ、今後は非推奨な警告はデフォルトでは出なくなる

先日 Ruby 2.7.2 がリリースされました。 Ruby 2.7.2 リリース このリリースで先日お伝えした『非推奨な警告がデフォルトでは出なくなる』ようになりました。 なので、今後は非推奨な機能が削除されるといきなりアプリケーションが動作しなくなる可能性があ…

改めて整理する Ruby 3.0 に実験的に入る予定のエンドレスメソッド定義構文と右代入演算子について

以前に以下の記事で右代入演算子とエンドレスメソッド定義構文について簡単に解説しました。 Ruby の開発版に右代入演算子とエンドレスメソッド定義構文が入った - Secret Garden(Instrumental) 上記の記事から少し挙動に変更があったので Ruby 3.0.0 previe…

2020/10/01 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #17190] Not working multiple assignment by rightward assignment statement 3.0 preview1 で 42, 42 => a, b みたいな多重代入…

Ruby の BasicObject + method_missing で遊んでみる

BasicObject を使いたいことがあるんですね — ima1zumi (@ima1zumi) September 24, 2020 Twitter 上で BasicObject についてやり取りしている流れで『BasicObject を使うことってあるんですか?』みたいな質問があったので簡単に BasicObject + #method_miss…

Ruby 3.0.0 preview1 がリリースと非推奨の警告がデフォルトではでなくなる予定

Ruby 3.0.0 preview1 がリリースされました。めでたい。 Ruby 3.0.0 Preview 1 Released NEWS 気になる機能はあとでまとめるとして NEWS には載ってなかった変更点をちょっと書きます。 ただし、この変更は Ruby 2.7.2 で取り込まれる予定なので Ruby 3.0.0 …

2020/09/24 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16828] Introduce find patterns Ruby 3.0 ではパターンマッチに以下のようなサポートを追加する # 前方に * を使ったパター…

Ruby の Ractor で sleep sort をやってみた

簡単にやってみた。 $stdout.sync = true puts "かいし!!!" data = (1..10).to_a.shuffle pp data ractors = data.map { |i| Ractor.new(i) { |it| # バッファリングを無効化 $stdout.sync = true sleep it / 5.0 puts it } } # 待ち処理 ractors.map(&:t…

Ruby のメソッド呼び出しと変数参照について注意すること

最近、ハマっている人が何人書いたのでちょっとまとめてみます。 Ruby のメソッド呼び出し Ruby ではメソッドを呼び出す場合に他の言語と比較して『() を省略してメソッドを呼び出す事』ができます。 def hoge(a = nil) "#hoge(#{a})" end # 括弧がなくても…

2020/09/17 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17171] Why is the visibility of constants not affected by private? 次のように Module#private に引数を渡さなかった場…

Ruby で明示的に名前を指定して親クラスのメソッドを呼ぶ

自身の親メソッドを呼ぶ 自身と同じ名前の親メソッドを呼ぶ場合は super が利用できます。 def value "Super#value" end end class Sub < Super def value # Super#value を呼ぶ super end end p Sub.new.value # => "Super#value" では、異なるメソッドから…

2020/09/11 今週の気になった bugs.ruby のチケット

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #15412] OpenStruct error when attribute is called 'method' OpenStruct は次のように要素にアクセスする事ができる require "o…

RubyKaigi Takeout 2020 の延長線で盛り上がってた Symbol#to_s について

RubyKaigi Takeout 2020 お疲れ様でした。 今回はオンラインということではじめて参加したんですが興味深い内容の話があって楽しかったです。 特に sawanobori からのサンダル紹介、焚き火で飯を炊いて魚を焼くコミッタの日常配信はニューノーマルを感じまし…

2020/09/04 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ Version number bumped to 3.0.0 from 2.8.0 (tentative) 開発版の Ruby が 2.8 から 3.0 になった、めでたい これでほぼほぼ 3.0 がリ…

Ruby 3.0 で変わる Module#include の挙動

今日の RubyKaigi Takeout 2020 の Ruby Committers vs the World でチラッと話が出たのでちょっとまとめでみました。 該当チケット:Bug #9573: descendants of a module don't gain its future ancestors, but descendants of a class, do - Ruby master -…

Ruby で ActiveSupport の in_groups_of を実装する

in_groups_of を Gem なしでやる方法がわからない— masuyama13 (@masuyama_13) August 31, 2020 in_groups_of っていうのは ActiveSupport にあるメソッドで each_slice と同じように任意の要素数で配列を分割するんですが、足りない分を nil で埋めるという…

2020/08/27 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Bug #17030] Enumerable#grep{_v} should be optimized for Regexp ary.select { |e| e.match?(reg) } と比較して ary.grep(reg) の方…

2020/08/20 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Misc #17041] DevelopersMeeting20200826Japan 来週水曜日に開発者会議があります 気になるチケットがあれば上記のチケットにコメント…

2020/08/13 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #15504] Freeze all Range object リテラルで Range を生成すると同じ id のオブジェクトが返ってくるケースがある # これは…

Ruby でデバッグする ruby_jard というツールが凄まじくすごい

今日 Ruby Hacking Challenge in Hamada.rb に参加したときに ruby_jard という Ruby のデバッグツールを教えてもらいました。 これがかなり凄まじくすごかったのでちょっとまとめてみます。 ruby_jard とは ruby_jard とは Ruby のコードをデバッグするツー…

2020/08/06 今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17097] map_min, map_max #map_min #map_max を追加する提案 # 以下のようなコードを %w[aa b cccc dd].max_by(&:length).le…

今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #16923] Switch reserved for numbered parameter warning to SyntaxError _1 という名前は Numbered parameter で使用されて…

Ruby で #initialize を呼ばずにクラスのインスタンスを生成する

通常はクラスからインスタンスを生成するときに .new を使用するんですが、類似するクラスメソッドに .allocate というメソッドがあります。 Class#allocate (Ruby 2.7.0 リファレンスマニュアル) .allocate も .new と同様にクラスのインスタンスを生成する…

Ruby で単項演算子を . 演算子で呼び出す

Ruby では単項演算子 ! や + などをメソッドとして再定義する事ができます。 class X # ! はそのまま ! という名前のメソッドとして定義する def ! "X#!" end # + は二項演算子と区別するために +@ と書く def +@ "X#+@" end end x = X.new p !x # => "X#!" …

今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 先週のまとめ [Feature #17043] Invokable module for custom Proc-like objects 『Proc なオブジェクト』を明示化できるモジュールの追加案 Invokab…

今週の気になった bugs.ruby

内容は適当です。 今週と言っても今週みかけたチケットなだけでチケット自体は昔からあるやつもあります。 今週は少なめ。 先週のまとめ [Bug #17017] Range#max & Range#minmax incorrectly use Float end as max Range#max と Range#minmax の戻り値に一貫…