2012-09-04 66 views
0

假设我在Ruby的工作区中有一个可用的方法。有没有我可以使用的命令将恢复方法的完整名称?如何在Ruby中获取方法的完全限定名?

我正在寻找类似于Matlab中的which函数的东西,它返回给定的任何参数的明确名称。

我问,因为我在黄瓜写测试需要发送特定的GET和POST请求。我在我的工作区中同时有getpost方法,但我没有自己导入它们,所以我不知道它们来自哪里。我想看看这些方法的文档。为了查找文档,我需要知道它们是在哪个模块中定义的。我试图获取完全限定的名称,以便确定它们来自哪个模块。

+1

你看过[Pry](http://pryrepl.org/)吗? –

+0

以前没听说过,但我只是试了一下而已。谢谢! –

回答

1

我想通了。安德鲁马歇尔留下了一条评论,指出了我的正确方向。

首先我安装了pry,将其包含在我的gemfile中并运行bundle install

然后我将binding.pry插入我的测试代码。当我运行我的测试时,这使我陷入了一个撬会议。

在pry会话中,我输入了ls command,其中列出了我的上下文中的所有变量。我发现getpost根据Rack::Test::Methods#methods

Rack::Test::Methods#methods: _current_session_names authorize basic_authorize build_rack_mock_session build_rack_test_session clear_cookies current_session delete digest_authorize follow_redirect! get head header last_request last_response options post put rack_mock_session rack_test_session request set_cookie with_session 

因此,要找出您的工作空间的方法的FQN一个方法是运行撬的ls命令,然后检查输出。

+0

想想吧,我猜你也可以通过运行调试器,进入方法,然后查看堆栈跟踪来找出方法的定义。这可能是一个更好的解决方案。 –

+1

首先,Pry是一个调试器(它只是提供比普通的调试器更多的功能)。其次,您可以使用Pry查找方法的文档,只需输入:show-doc method_name查看文档。还有'show-source method_name'来显示源代码。 – horseyguy

+0

嗯......我试过'show-doc get'和'show-source get'。 'show-doc'说它找不到任何文件。 'show-source'只给了我一个来自'forwardable.rb'的代码片段,这与做出http请求没有任何关系。所以这两种方法对我都没什么帮助(也许我没有正确使用它们?我是RoR的新手)。关于Pry的好处。 –

相关问题