From: transfire@... Date: 2014-04-11T19:48:22+00:00 Subject: [ruby-core:61995] [ruby-trunk - Feature #9453] Return symbols of defined methods for `attr` and friends Issue #9453 has been updated by Thomas Sawyer. Letting #private accept an Array seems more preferable then adding yet another ~~method~~ slew of methods: `private_attr_writer`, `private_attr_accessor`, `protected_attr_reader`, `protected_attr_writer`, `protected_attr_accessor`, ... ---------------------------------------- Feature #9453: Return symbols of defined methods for `attr` and friends https://bugs.ruby-lang.org/issues/9453#change-46186 * 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/