【问题标题】:How do I make sense of Ruby documentation? [closed]如何理解 Ruby 文档? [关闭]
【发布时间】:2013-10-09 11:41:32
【问题描述】:

我见过这样的代码:

Net::HTTP::Post.new(url)

如果我然后使用ri 如下:

$ ri Net::HTTP::Post

我几乎没有得到任何文档,并且:

$ ri Net::HTTP::Post.new

结果

Nothing known about Net::HTTP::Post.new

在阅读Net::HTTP 的文档时,我怀疑代码应该改用Net::HTTP#request_post。我仍然发现使用这个模块的正确方法令人困惑。为什么Net::HTTP::Post.net 似乎有效?即使使用Net::HTTP.request_post,我也得到:

undefined method `request_post' for Net::HTTP:Class.

为了澄清我的问题,我想知道如何:

  • 查找 ruby​​ 的最佳文档。
  • 根据提供的示例,获取实现目标的最佳方式(即发出 HTTP POST 请求,我将补充说我需要在正文中使用提供身份验证、cookie 和数据)。李>
  • 理解当方法用“R”注释时的含义(这是否意味着“只读”?这没有意义,因为我需要设置请求正文,这意味着写入...

作为对比,这是 Python 的等效文档,我理解(我自己是 python 开发人员):http://docs.python.org/2/library/httplib.html

【问题讨论】:

  • 请记住,Ruby 做了很多元编程。 Net::HTTP::Post 可能是对在运行时或以某种方式动态创建的类的引用。它的ruby-doc page 暗示了很多,我猜它只是HTTPGenericRequest 的别名,HTTP 方法预初始化为"POST"
  • millimoose:我注意到了。那里是否有任何约定可以让我对如何做到这一点有所了解?考虑到 ri 在这种情况下并不总是提供好的文档,关于使用 Net::HTTP 模块的任何好的文档?
  • 你运行的是哪个版本的 Ruby?
  • Vidya:此刻,我使用的是古老的 Ruby 1.8.7,我知道 1.9 和 2.0 之间的区别,但是文档问题似乎适用于所有这些.
  • @Arafangion 我会说先尝试 ruby​​-doc,然后在旧版本没用时使用最新版本的文档。 (这里似乎就是这种情况。)2.0 似乎为net/http 添加了概念文档。

标签: ruby


【解决方案1】:

这是我最终会接受的答案,除非其他人有更好的答案:

为了理解 Ruby 的文档,请按顺序执行以下操作:

  • 阅读最新版本的 Ruby 中的模块文档。使用 ruby​​-doc.org,即使此版本适用于 Ruby 2.0 而您使用的是 Ruby 1.8,它仍然可能更清晰、更完整。
  • 使用 google 查找代码示例。
  • 使用 irb 检查示例是否确实有效。
  • 使用 ri 检查您的 ruby​​ 版本的文档是否存在。如果存在,请查看您的版本中可能存在的差异。
  • 使用反射/自省来尝试发现任何可能有用的公开方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多