Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from
Oct 31, 2021

Conversation

koheitakahashi
Copy link
Contributor

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
end

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

Choose a reason for hiding this comment

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

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

Copy link
Contributor 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
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