Feature #9453
closedReturn symbols of defined methods for `attr` and friends
Description
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