Как отлаживать ruby-ldap, когда метод возвращает только false?

Моя цель — перенести учетную запись в другую OU. Насколько я понимаю, следующий код должен выполнять эту работу. Однако он возвращает false. Нет ошибок, предупреждений или исключений. Как отладить, почему это не работает?

secure_ldap.rename(
    olddn: self.dn, 
    newrdn: "CN=#{self.cn}", 
    delete_attributes: true, 
    new_superior: "#{ou}"
  )

person Rayhan Muktader    schedule 21.12.2018    source источник


Ответы (2)


Что ж, одним из подходов может быть добавление pry и pry-byebug в ваше приложение. Измените свой код, чтобы включить binding.pry, затем запустите приложение:

Frame number: 0/0

From: ./test.rb @ line 1 :

 => 1: binding.pry
    2: secure_ldap.rename(
    3:   olddn: self.dn,
    4:   newrdn: "CN=#{self.cn}",
    5:   delete_attributes: true,
    6:   new_superior: "#{ou}"

=> 

Теперь используйте step для пошагового выполнения выполнения. Это позволит вам перейти к rename внутри net-ldap и, например, проверка локальных переменных в вызове этого метода.

person anothermh    schedule 21.12.2018
comment
step здесь вызовет ту же ошибку, что и OP. Что ему действительно нужно, так это спецификации самого LDAP и правильные строки для передачи его командам. - person lacostenycoder; 24.12.2018
comment
@lacostenycoder Он специально спросил: «Как мне отладить, почему это не работает?» Я объяснил методику отладки. Он не спрашивал: «Почему это не работает?» - person anothermh; 24.12.2018

Ошибка не является рубиновой ошибкой. При работе со стандартными интерфейсами библиотеки ruby ​​для системных программ, таких как LDAP, обращайтесь к собственному источнику документации.

В вашем случае вы, вероятно, ищете https://ldap.com/ldap-dns-and-rdns/, который объясняет, какие строки использовать и какие из них нужно экранировать.

person lacostenycoder    schedule 24.12.2018