В конце концов, я в конечном итоге вручную исправил шрифт, используя справку из этого ответа:
Это невозможно с рубином в настоящее время. Вы не можете передавать «пустые» атрибуты в методы. Самое близкое, что вы можете получить, это передать nil:
ldap_get(base_dn, filter, nil, X)
Однако, это установит область действия на nil, а не LDAP :: LDAP_SCOPE_SUBTREE.
Что вы можете сделать, это установить значение по умолчанию в вашем методе:
def ldap_get(base_dn, filter, scope = nil, attrs = nil)
scope ||= LDAP::LDAP_SCOPE_SUBTREE
... do something ...
end
Теперь если Вы вызываете метод, как указано выше, поведение будет таким, как вы ожидаете.
Вам почти всегда лучше использовать хэш опций.
def ldap_get(base_dn, filter, options = {})
options[:scope] ||= LDAP::LDAP_SCOPE_SUBTREE
...
end
ldap_get(base_dn, filter, :attrs => X)
Невозможно сделать это так, как вы определили ldap_get
. Однако, если вы определите ldap_get
следующим образом:
def ldap_get ( base_dn, filter, attrs=nil, scope=LDAP::LDAP_SCOPE_SUBTREE )
Теперь вы можете:
ldap_get( base_dn, filter, X )
Но теперь у вас есть проблема, которую вы не можете вызвать с помощью первых двух аргументов и последнего аргумента (та же проблема как и раньше, но теперь последний аргумент отличается).
Объяснение этого простое: каждый аргумент в Ruby не обязательно должен иметь значение по умолчанию, поэтому вы не можете назвать его так, как вы указали. Например, в вашем случае первые два аргумента не имеют значений по умолчанию.