Skip to content

3.0.0でクラス変数の挙動が変更されたため説明を更新#2581

Merged
znz merged 2 commits intorurema:masterfrom
koheitakahashi:update-class-variable-doc
Oct 31, 2021
Merged

3.0.0でクラス変数の挙動が変更されたため説明を更新#2581
znz merged 2 commits intorurema:masterfrom
koheitakahashi:update-class-variable-doc

Conversation

@koheitakahashi
Copy link
Copy Markdown

PR の概要

3.0.0にて、子クラスで定義されているクラス変数を親クラスで再定義した場合に、子クラスがそのクラス変数を参照すると例外が発生するように変更されました。

下記のスクリーンショットの「修正前」にあるように、上記の挙動について言及されていなかったため、説明文とサンプルコードを更新しました。

(加えて、不要な空白を削除しました)

スクリーンショット

修正前

Screen Shot 2021-06-20 at 16 40 21

修正後

Screen Shot 2021-06-20 at 16 41 55

参考

手元でリファレンスマニュアルに記載されているサンプルコードを実行した時のログ

環境: Ruby 3.0.0

irb(main):001:1* class Foo
irb(main):002:0> end
=> nil
irb(main):003:1* class Bar < Foo
irb(main):004:1*   @@v = :bar
irb(main):005:0> end
=> :bar
irb(main):006:1* class Foo
irb(main):007:1*   @@v = :foo
irb(main):008:0> end
=> :foo
irb(main):009:1* class Bar
irb(main):010:1*   p @@v
irb(main):011:1* end
Traceback (most recent call last):
        5: from /Users/koheitakahashi/.rbenv/versions/3.0.0/bin/irb:23:in `<main>'
        4: from /Users/koheitakahashi/.rbenv/versions/3.0.0/bin/irb:23:in `load'
        3: from /Users/koheitakahashi/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>'
        2: from (irb):9:in `<main>'
        1: from (irb):10:in `<class:Bar>'
RuntimeError (class variable @@v of Bar is overtaken by Foo)

子クラスで定義されているクラス変数を親クラスで再定義した場合に、子クラスがそのクラス変数を参照すると例外が発生するように変更された。
上記の挙動の変更により、クラス変数の説明文と実際の挙動に差異があったため、サンプルコードと説明文を更新した。

ref: 上記の挙動変更のチケット https://bugs.ruby-lang.org/issues/14541
@koheitakahashi koheitakahashi changed the title 3.0.0でクラス変数の挙動が変更になったため説明を更新 3.0.0でクラス変数の挙動が変更されたため説明を更新 Jun 20, 2021
Comment thread refm/doc/spec/variables.rd Outdated
end

class Bar
p @@v #=> RuntimeError になります。
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他のところの実行例のように、具体的な例外のメッセージも入っていると良さそうです。

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@znz
コメントありがとうございます 🙏
おっしゃるとおり、具体的な例外メッセージがあった方が良さそうですね 🙂

1c366cb にて例外メッセージを記述するようにしました。

rurema#2581 (comment) のコメントを受けて、具体的なエラーメッセージを記述するようにした。
@znz znz merged commit 08e1b9c into rurema:master Oct 31, 2021
@znz
Copy link
Copy Markdown
Member

znz commented Oct 31, 2021

ありがとうございます。

@koheitakahashi koheitakahashi deleted the update-class-variable-doc branch November 1, 2021 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants