From: naruse@... Date: 2014-02-22T05:05:34+00:00 Subject: [ruby-core:60971] [ruby-trunk - Bug #9452] Refining methods that should be private Issue #9452 has been updated by Yui NARUSE. Backport changed from 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: DONE r45107. ---------------------------------------- Bug #9452: Refining methods that should be private https://bugs.ruby-lang.org/issues/9452#change-45374 * Author: Jan Lelis * Status: Closed * Priority: Normal * Assignee: Shugo Maeda * Category: * Target version: * ruby -v: ruby 2.2.0dev (2014-01-25 trunk 44707) [x86_64-linux] * Backport: 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: DONE ---------------------------------------- Are refinements also meant to add private methods? This is what I tried: module R refine Object do def m puts "Success!" end private(:m) end end using R m # success 42.m # success (= not private) However, I can get near the desired functionality by defining a private method first: class Object private def m end end module R refine Object do def m puts "Success!" end end end using R m # success 42.m # no success (= it is private) It calls the right code. But requires global core ext. -- http://bugs.ruby-lang.org/