Запутался, отвечая на комментарий / вопрос @ ericso в другом комментарии, так что вот он в ответе - модуль, который я использую (основываясь на коде @ ReeseMoore), чтобы сделать это и при необходимости установить переменные экземпляра: *
# adds ability to dynamically create instance vars & attr_accessors
module Attributable
def create_method(name, &block)
self.class.send(:define_method, name.to_sym, &block)
end
def create_setter(m)
create_method("#{m}=".to_sym) { |v| instance_variable_set("@#{m}", v) }
end
def create_getter(m)
create_method(m.to_sym) { instance_variable_get("@#{m}") }
end
def set_attr(method, value)
create_setter method
send "#{method}=".to_sym, value
create_getter method
end
end