From: nerdrew@... Date: 2014-08-08T22:38:44+00:00 Subject: [ruby-core:64276] [ruby-trunk - Feature #9453] Return symbols of defined methods for `attr` and friends Issue #9453 has been updated by Andrew Lazarus. Chaining the two suggestions leads to a nice syntax (in my opinion): `private attr_reader :name, :address, :etc` `private` needs to accept an array and `attr_*` needs to return its list (as an array) of arguments. ---------------------------------------- Feature #9453: Return symbols of defined methods for `attr` and friends https://bugs.ruby-lang.org/issues/9453#change-48263 * Author: Joshua Ballanco * Status: Rejected * Priority: Normal * Assignee: Yukihiro Matsumoto * Category: core * Target version: ---------------------------------------- With Ruby 2.1 returning a symbol from `def` and `define_method`, that leaves `attr`, `attr_reader`, `attr_writer`, and `attr_accessor` as ways to define methods that still return nil. This is unfortunate, because it prevents the use of method decorators developed to work with `def` from also working with the `attr*` methods. Because these mechanisms can define more than one method, the return values would need to be arrays of symbols. For an example of how this could be useful in real-world code, consider this sample from James Edward Gray II's Warehouse Keeper example (https://github.com/JEG2/warehouse_keeper): attr_reader :images, :key_map, :window, :screen_manager, :animations private :images, :key_map, :window, :screen_manager, :animations if `attr_reader` returned symbols, then this could be simplified to: private *attr_reader(:images, :key_map, :window, :screen_manager, :animations) I've attached a patch that implements this change and includes a few tests. For those who use git, I've also submitted this as a pull request here: https://github.com/ruby/ruby/pull/517 ---Files-------------------------------- attr_rv.patch (3.23 KB) -- https://bugs.ruby-lang.org/