如何理解Ruby文档?

如何理解Ruby文档?,ruby,Ruby,我见过这样的代码: 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::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\u post
,我也会得到:

undefined method `request_post' for Net::HTTP:Class.
为了澄清我的问题,我想知道如何:

  • 查找ruby的最佳文档
  • 给出所提供的示例,获取实现目标的最佳方法(即,要发出HTTP POST请求,我将添加我需要在正文中使用提供身份验证、cookie和数据)
  • 当方法被注释为“R”时,理解它的含义(这是指“只读”吗?这没有意义,因为我需要设置请求主体,这意味着写

作为对比,这是Python的等效文档,我理解(我自己也是Python开发人员):

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

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

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

记住Ruby做了很多元编程。
Net::HTTP::Post
可能是对运行时创建的类的引用,也可能是对动态创建的类的引用。这也意味着,我猜它只是HTTP方法预初始化为
“Post”的
HTTPGenericRequest
的别名
millimoose:我注意到了。有没有什么约定可以让我知道如何做到这一点?有没有关于使用Net::HTTP模块的好文档,因为在这种情况下,ri并不总是提供好的文档?你正在运行哪个版本的Ruby?维迪亚:现在,我正在使用古老的Ruby 1.8.7,一个d我知道1.9和2.0之间的区别,但是文档问题似乎适用于所有版本。@Arafangion我想说的是,先试试ruby doc,当旧版本没有用时,使用最新版本的文档。(这里似乎就是这样。)2.0似乎增加了
net/http
的概念文档。