【问题标题】:How do I debug ruby-ldap when a method only returns false?当方法仅返回 false 时,如何调试 ruby​​-ldap?
【发布时间】:2018-12-21 21:40:49
【问题描述】:

我的目标是将帐户移至另一个 OU。我的理解是以下代码应该可以完成这项工作。但是,它返回false。没有错误、警告或异常。如何调试为什么这不起作用?

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

【问题讨论】:

    标签: ruby active-directory ruby-1.9 netldap


    【解决方案1】:

    嗯,一种方法可能是将prypry-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 逐行执行。它将允许您进入 net-ldap 内部的 rename method 调用,例如检查该方法调用中的局部变量。

    【讨论】:

    • step 这里会引发 OP 一开始遇到的相同错误。他真正需要的是 LDAP 本身的规范以及传递给它的命令的适当字符串。
    • @lacostenycoder 他特别问“我该如何调试为什么这不起作用?”我解释了一种调试技术。他没有问“为什么这不起作用?”
    【解决方案2】:

    该错误不是 ruby​​ 错误。在处理与 LDAP 等系统程序的 ruby​​ 标准库接口时,请参阅它自己的文档源。

    在您的情况下,您可能正在寻找 https://ldap.com/ldap-dns-and-rdns/,它解释了要使用的字符串以及需要转义的字符串。

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 2012-02-21
      • 1970-01-01
      • 2016-03-11
      • 2021-05-17
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多