From: p@... Date: 2015-04-24T13:37:20+00:00 Subject: [ruby-core:68984] [Ruby trunk - Bug #11096] [Open] 'private' access control bypassed when ||= is used Issue #11096 has been reported by Piotr Soko��owski. ---------------------------------------- Bug #11096: 'private' access control bypassed when ||= is used https://bugs.ruby-lang.org/issues/11096 * Author: Piotr Soko��owski * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-04-24 trunk 50382) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Problematic code ~~~ class A def aa self.bb ||= 0 end private def bb 1 end end A.new.aa ~~~ On 2.0 and 2.1 this produces 'NoMethodError: private method `bb' called for'. But since 2.2 this works and return '1'. Checked also on ruby-head from rvm. This is similar #9907 but this allows to execute private methods by pretending that setter might be used. -- https://bugs.ruby-lang.org/