0
Привет Я хотел бы инициализировать атрибуты экземпляра объекта рубинового динамически через какой-то конфигурационный файл, я могу сделать это довольно быстро, используя следующий код:attr_accessor и мета-программирование в Ruby,
class ApiTester
def initialize(path= "api_test")
h = eval(File.open("#{path}/config.hash","r").read)
h.each do |k,v|
eval("@#{k}=#{v.class == String ? "\"#{v}\"" : v }")
end
end
end
Как Я передаю атрибут "@ # {k}" свойство attr_accessor?
Вы знаете, что делает 'attr_accessor', правильно? Таким образом, вы можете просто определить эти методы аналогичным образом с этой переменной экземпляра. –
Вероятно, вы должны определить геттеры и сеттеры в * singleton class * вашего экземпляра. В противном случае вы будете загрязнять ваш класс ApiTester и, следовательно, каждый экземпляр. Другой вариант - генерировать весь класс динамически, на основе конфигурации. – Stefan