2012-10-22 18 views
0

在Eclipse中使用Java将在什么类/模块,它一直是非常容易的,我确定在何处定义的方法:只需按Ctrl +单击方法调用和它带给你的在其包含的类中定义方法。很明显,它使Eclipse发生了很多事情,但即使使用普通的Java,我们仍然可以重新导入语句。如何确定方法在

方法查找似乎与Rails开发非常困难。

下面是一个例子:

require 'test_helper' 

class UserStoriesTest < ActionDispatch::IntegrationTest 
    fixtures: products 

    LineItem.delete_all 
    Order.delete_all 
    ruby_book = products(:ruby) 

    get "/" 
    assert_response :success 
    assert_template "index" 

    cart = Cart.find(session[:cart_id]) 
    assert_equal 1, cart.line_items.size 
    assert_equal ruby_book, cart.line_items[0].product 

    get "/orders/new" 
    assert_response :success 
    assert_template "new" 
end 

比方说,我想借此在assert_equal方法一探究竟。如果我用Java和包含assert_equal类的工作很可能会通过import语句在这个类与它的位置明确指定(例如java.lang.SomeCoreClass)描述。因为我不知道在哪里的地狱这种方法定义,我最终做的是谷歌搜索“assert_equal”地发现,我在调查方法(可能和希望)在测试::单位定义::断言

我很感兴趣,从几个人对他们的做法听到确定方法的位置。

+0

你问哪个编辑器支持 “去定义” CTRL单击? RubyMine可以做到这一点。 – nurettin

回答

4

试试这个:

class Bong 
    def smoke 
    puts "smoke" 
    end 
end 

Bong.method(:smoke) 
Bong.method(:smoke).source_location 
+0

lmao最好回答有史以来。道具。 – kwikness

+0

一个相关的例子总是有帮助;) – ChuckE

1

您可以使用method(:<method_name>).owner跟踪类的方法。在你的情况下,它将是method(:assert_equal).owner

method#owner

+0

是的,但这对我有帮助吗?我不能只是启动irb并键入assert_equal.owner。 – kwikness

+0

你可以在你的项目范围内使用它来找出哪个类正在定义你的方法。如果你在irb中定义你的类,那么你应该可以在irb中使用这个方法。 – Raghu

+0

在你的测试用例文件中只打印p方法(:assert_equal).owner。 – Raghu