0

Is there a way to do something like this:

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

where the output is embedded as maybe an rdoc style comment? I am looking to be able to have quick documentation for a set of seed commands for our rails app

thx

4

2 回答 2

1

你可以用 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
于 2013-10-16T19:07:09.470 回答
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方法定义中,由方法名称索引。

于 2013-10-17T00:32:10.997 回答