Структура, в которой вы нуждаетесь, OpenStruct, которые работают так же, как литералы объектов JS. Он перезаписал метод method_missing, который позволяет добавлять новые переменные, используя методы setter.
Ответ 3
Ruby не имеет объектных литералов.
Ruby - это объектно-ориентированный язык на основе классов. Каждый объект является экземпляром класса, и классы несут ответственность за создание экземпляров самих себя. Вы не создаете объекты, просто записывая их, вы должны попросить класс создать экземпляр самого себя, отправив ему сообщение (обычно называемое new, хотя это только соглашение).