有没有办法在 Ruby 方法中嵌入可以通过 IRB 或 Rails C 输出的注释



有没有办法做这样的事情:

>Location.get_info 
......
>Location.get_info --help
outputs info on the location; lazily loads hours 

输出嵌入在哪里作为 rdoc 样式注释?我希望能够为我们的 rails 应用程序提供一组种子命令的快速文档

感谢

你几乎可以用Ruby构建所有东西......

我不认为有任何图书馆在做你想做的事。

从你放在帖子上的IRB标签猜测,你想帮助人们使用你的代码。

在这种情况下,您可以告诉他们使用PRY并使用show-doc功能

[2] pry(main)> show-doc User#url
From: /Users/paule/Documents/rails/on_ruby/app/models/user.rb @ line 39:
Owner: User
Visibility: public
Signature: url()
Number of lines: 1
generates a homepage url for a user

方法不是对象,因此不能在其中存储任何内容。

您可以使用 Object#method 方法获取绑定方法的代理对象,也可以使用 Module#instance_method 方法获取未绑定方法的代理对象,但该代理对象只是一个代理对象。特别是,不能保证在请求代理对象时始终会获得相同的代理对象。

因此,如果您获取某个方法的代理对象,

然后在其中存储一些文档,然后获取同一方法的另一个代理对象,这可能是一个不同的代理对象,其中没有您的文档。

例:

class UnboundMethod
  attr_accessor :doc
end
map = Array.instance_method(:map)
map.doc = '`map` maps a block over all elements'
map_again = Array.instance_method(:map)
map_again.doc
# => nil
map.doc
# => '`map` maps a block over all elements'
map.object_id == map_again.object_id
# => false

因此,您不能将文档存储在方法中,因为方法不是对象,也不能将其存储在代理对象中,因为 Ruby 不保证这些代理对象的身份。

您需要将其存储在其他地方。也许在定义方法的Module中,按方法名称进行索引。

最新更新