LoginSignup
0
0

More than 3 years have passed since last update.

Rails6 のちょい足しな新機能を試す 125(endless range bug fix編)

Posted at

はじめに

Rails 6 に追加された新機能を試す第125段。 今回は、endless range bug fix 編です。
Rails 6.0.0 では、 (1..) などのエンドレスな Range で include? メソッドを呼ぶと RangeError が発生するバグがありました。

Rails 6.0.1 以降では修正されています。

Ruby 2.6.5, Rails 6.0.1, Rails 6.0.0 で確認しました。

$ rails --version
Rails 6.0.1

今回は、 rails new して、 app ディレクトリの下にファイルを作って確認してみます。

Rails プロジェクトを作る

Rails プロジェクトを新たに作成します。

$ rails new rails_sandbox
$ cd rails_sandbox

スクリプトを作成する

Range#include? を実行するスクリプトを作成します。

scripts/endless_range.rb
p (1..).include?(2)

Ruby 2.6.5 では

エラーになりません。

$ ruby -v scripts/endless_range.rb
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux-musl]
true

Rails 6.0.1 では

Rails 6.0.1 (以降) では、エラーになりません。

$ bin/rails runner scripts/endless_range.rb
Running via Spring preloader in process 263
true

Rails 6.0.0 では

RangeError が発生します。

$ bin/rails runner scripts/endless_range.rb
...
         2: from scripts/endless_range.rb:1:in `<main>'
         1: from /usr/local/bundle/gems/activesupport-6.0.0/lib/active_support/core_ext/range/include_time_with_zone.rb:14:in `include?'
/usr/local/bundle/gems/activesupport-6.0.0/lib/active_support/core_ext/range/include_time_with_zone.rb:14:in `last': cannot get the last element of endless range (RangeError)

試したソース

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0