Project

General

Profile

Actions

Bug #5776

closed

irb のトップレベルで定義したメソッドが public になる

Bug #5776: irb のトップレベルで定義したメソッドが public になる

Added by hibariya (hi hibariya) almost 14 years ago. Updated almost 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2011-12-15 trunk 34056) [x86_64-darwin11.2.0]
Backport:
[ruby-dev:<unknown>]

Description

irb のトップレベルで定義したメソッドの呼び出し制限が private ではなく public になってしまいます。


irb(main):001:0> def greeting
irb(main):002:1> 'hi'
irb(main):003:1> end
=> nil
irb(main):004:0> val = Object.new
=> #Object:0x007fe6ca05fd80
irb(main):005:0> val.greeting
=> "hi"
irb(main):006:0> val.private_methods.grep /greeting/
=> []
irb(main):007:0> val.public_methods.grep /greeting/
=> [:greeting]

public になるのは irb で実行したときのみです(ファイルに保存して ruby コマンドで実行した場合は private メソッドとして定義されます)。


Files

Updated by ayumin (Ayumu AIZAWA) almost 14 years ago Actions #1 [ruby-dev:45084]

  • Category set to lib
  • Status changed from Open to Assigned
  • Assignee set to keiju (Keiju Ishitsuka)
  • Target version set to 2.0.0

1.9.3-p0でも再現することを確認しました。

Updated by davidbalbert (David Albert) over 13 years ago Actions #2 [ruby-dev:45856]

I ran into this bug recently and I did a bit of investigating. This is due to a change introduced by #3406 (r29578) that made inner method definitions public regardless of the visibility of the method they were defined in.

I've attached a patch that calls private in the irb_binding method before returning the binding, which fixes the problem. I also verified that context mode 3 was the only mode affected by r29578 and that IRB works correctly when started via the command line and via IRB.start.

Updated by keiju (Keiju Ishitsuka) almost 13 years ago Actions #3

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r38597.
hi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • lib/irb/workspace.rb: define method to private on top-level irb
    [Bug #5776]. Patch by davidbalbert.
Actions

Also available in: PDF Atom