Issue #9452 has been reported by Jan Lelis. ---------------------------------------- Bug #9452: Refining methods that should be private https://bugs.ruby-lang.org/issues/9452 * Author: Jan Lelis * Status: Open * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.2.0dev (2014-01-25 trunk 44707) [x86_64-linux] * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 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/