From: matthew@... Date: 2019-01-10T11:26:48+00:00 Subject: [ruby-core:90989] [Ruby trunk Feature#6470] Make attr_accessor return the list of generated method Issue #6470 has been updated by phluid61 (Matthew Kerwin). In general I support this request, but in this proposed use-case ... > ```ruby > attr_reader :foo > private attr_writer :foo > ``` > > So one can use the symmetric `foo` and `foo=` in the class, but only the getter would be public. > This is also useful to evolve `foo=` (e.g., to invalidate some caches if set) and add extra logic in it, without having to change all places from `@foo =` to `self.foo =`. `foo=` without `@` or `self.` will assign a local variable. You'd have to change it to `foo=(...)` or `send :foo=, ...` anyway, no? ---------------------------------------- Feature #6470: Make attr_accessor return the list of generated method https://bugs.ruby-lang.org/issues/6470#change-76209 * Author: rupert (Robert Pankowecki) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) * Target version: ---------------------------------------- attr_accesor currently returns nil. It would be more helpful if it return list of generated methods so that it can become an argument to other methods like :private or :protected. That way private accessors can still be defined at top of the class and be private without changing the visibility of next methods. class Something private *attr_accessor :user, :action # IMHO This is nice # private attr_accessor :user, :action # <-- would be even better if :private method accepted arrays def initialize(user, action) self.user = user self.action = action end def public_method user.do_something(action) end end VS class Something private; attr_accessor :user, :action; public # IMHO Hack!! def initialize(user, action) self.user = user self.action = action end def public_method user.do_something(action) end end VS class Something def initialize(user, action) self.user = user self.action = action end def public_method user.do_something(action) end private attr_accessor :user, :action # IMHO Does not look nice at bottom of the class definition end -- https://bugs.ruby-lang.org/ Unsubscribe: