有没有办法做这样的事情:
>Location.get_info
......
>Location.get_info --help
outputs info on the location; lazily loads hours
将输出嵌入为rdoc样式注释?我希望能够为我们的rails应用程序提供一组种子命令的快速文档
THX
答案 0 :(得分:1)
你可以在红宝石中建造几乎所有东西......
我不认为那里有任何图书馆正在做你想要的。
根据您在帖子中添加的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
答案 1 :(得分:0)
方法不是对象,因此您不能在其中存储任何内容。
你可以使用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
中定义方法,由方法名称索引。