2012-10-22 1 views
0

Eclipse에서 Java로 작업하는 것으로부터 메소드가 정의 된 위치를 결정하는 것은 매우 쉽습니다. 메소드 호출을 Ctrl + 클릭하기 만하면됩니다. 클래스를 포함하고있는 메소드 정의. 분명히 이런 일이 많이 일어나는 것은 Eclipse이지만, 평범한 구식 자바를 사용하더라도, 우리는 여전히 수입 명세서를 가지고있다.메소드가있는 클래스/모듈을 결정하는 방법

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 :: Assertions .

사람들이 방법 위치를 결정하는 방법에 대해 듣고 싶습니다.

+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

은 print p 메소드 (: assert_equal) .owner입니다. – Raghu

관련 문제