Существует общий атрибут LDAP, называемый userCertificate; двоичный. На самом деле в имени атрибута есть точка с запятой. В ruby я превращаю запись LDAP в объект OpenStruct с именем struct.
>> struct.class
=> OpenStruct
Но, конечно, ruby думает, что это символ конца строки.
?> struct.userCertificate;binary
NameError: undefined local variable or method `binary' for main:Object
from (irb):52
from :0
IRB знает, что локальная переменная есть, потому что она дает мне struct.userCertificate;binary
на вкладке автозаполнения. Я также вижу переменную класса при вызове struct.methods для него.
>> struct.methods
=> ... "send", "methods", "userCertificate;binary=", "hash", ...
Это определенно есть, я могу увидеть содержимое, если напечатать всю переменную to_s (). Но как я могу получить доступ к локальной переменной, если в ней есть точка с запятой? У меня есть обходные пути для этого, но я подумал, что опубликовать интересную проблему.