Sometimes you might want certain accessors to only be available within your class, so you make them private. However Ruby will yell a warning at you if you do something like this:
private
attr_accessor :name
#=> warning: private attribute?
In order to filter out this noise you can declare your own accessor like so:
module PrivateAccessors
def private_attr_accessor(*names)
attr_accessor *names
private *names
end
def private_attr_reader(*names)
attr_reader *names
private *names
end
def private_attr_writer(*names)
attr_writer *names
names = names.map do |attr| "#{attr}=".to_sym end
private *names
end
end
Posted by Jan Bussieck to 9elements's deck (2015-06-04 13:42)