在Eclipse中使用Java时,我总是非常容易确定方法的定义:只需按住ctrl +单击方法调用,它就会将其带到包含类的方法定义中。显然,Eclipse会让很多事情发生,但即使使用普通的旧Java,我们仍然可以依赖于import语句。
使用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”以发现我正在调查的方法(可能并且希望)在 Test :: Unit ::中定义断言
我很想听听一些人确定方法位置的方法。
答案 0 :(得分:4)
试试这个:
class Bong
def smoke
puts "smoke"
end
end
Bong.method(:smoke)
Bong.method(:smoke).source_location
答案 1 :(得分:1)
您可以使用method(:<method_name>).owner
来跟踪方法的类。在您的情况下,它将是method(:assert_equal).owner
。