2012-05-22 4 views
2

나는 Mac에서 레일 응용 프로그램을위한 리팩토링 도구를 찾고 있는데. 전체 주간을 연구 한 후 리팩토링 네임 스페이스/컨트롤러/모델/뷰/라우트에 사용할 수있는 좋은 도구가 없다는 것에 놀라움을 금치 못했습니다. 나는 맥 패러다임에 조금 익숙하다. 그래서 나는 뭔가를 놓치고 있을지도 모른다.레일 코드 리팩토링 도구를 Mac 용

일부 Rails를 대체 할 수있는 몇 가지 보석을 볼 수 있지만 리팩터링 후에도 "수동 조정"이 필요합니다.

리팩토링 :

내 요구 사항을 제공하기 위해, 여기에 표준 레일입니다
# routes 
map.namespace :admin do |admin| 
    admin.resources :items 
end 
match "/admin/items/:id/enable" => "admin/items#enable" 

# model 
/app/models/items.rb 
class item < ActiveRecord::Base 

end 

# views 
/app/views/admin/items/ 
/app/views/admin/items/index.html.erb 
/app/views/admin/items/show.html.erb 
/app/views/admin/items/new.html.erb 
/app/views/admin/items/edit.html.erb 


# controller 
/app/controllers/admin/items_controller.rb 

class Admin::ItemsController < ApplicationController 
    def index 
    # 
    end 

    def show 
    # 
    end 

    def enable 
    # 
    end 
end 

이 도구에 대한 나의 요구 사항은 매우 기본적인

프로젝트 "항목" "제품"에 -의 경우 경기와

  1. 도구는 "항목"이 "제품"을 포함하는 모든 파일의 이름을 바꿔야합니다.
  2. "항목"이 포함 된 폴더의 이름을 "produ" ct "
  3. 도구는 현재 디렉터리 나 하위 디렉터리의 모든 파일에서"항목 "과"제품 "을 찾아서 바꿔야합니다. 나는 단순히으로 전체 프로젝트를 반응기 수

    : 위의 기능을

어떤 맥 도구의 링크 또는 이행 할 수있는 스크립트를 제공하는 데 도움이 할 수있는 경우

> refactor "item" "product" 
> refactor "Item" "Product" 
> refactor "admin" "shop" 
> refactor "Admin" "Shop" 

은 크게 감사 제 위 요구 사항.

+0

ruby ​​mine을 사용해 볼 수도 있습니다 (직접 사용하지는 않지만 리팩터링과 같은 항목에 대한 지원을 요청합니다) –

+0

Thanks Frederick. 나는 RubyMine을 시도했지만 네, RubyMine으로 클래스 나 메소드 이름을 리팩터링 할 수 있지만 폴더 이름과 경로 맵의 이름 바꾸기 (# 1 및 # 2 리펙터 요구 사항) 처리가 여전히 부족합니다. –

답변

2

글쎄 나는이 소리가 깔끔한 결정 그래서 당신이 원하는 것을 해낼 솔기 도구를 작성하고 refacto 전화하기로 결정했습니다.

는 여기 당신의 빠른 읽기 나 :

적절한 사용법은 다음과 같습니다 refacto findString changeString <file extensions> <options>

파일 확장자는 선택 사항이 아니다. 파일의 이름을 바꾸거나 리팩터링하려면 파일 확장명을 하나 이상 나열해야합니다. 폴더는 기본적으로 이름이 바뀌므로 이름을 바꾸려면 -nf를 사용하십시오.

옵션 :
-a : 각 파일/폴더의 리팩터링 또는 이름 변경 확인을 요청합니다.
-nf : 폴더 또는 하위 폴더의 이름을 변경하지 마십시오.
-ci : 대소 문자 구별 없음. FINDSTRING

의 모든 버전이 변경됩니다 여기에 소스 코드를 가져 오기 : https://github.com/bpo217/refacto

몇 가지 참고 :

Refacto이 파일에 클래스 이름 또는 아무것도 같은 단지를 FINDSTRING의 모든 인스턴스를 변경 그.

Refacto는 모든 하위 폴더와 하위 폴더의 파일을 터치합니다.

컴파일 한 후에는 도구를/usr/local/bin에 넣고 다른 작업을 수행 할 필요가 있으므로 터미널에 아무 곳이나 입력하여 refacto를 실행하면됩니다. 그것은 항상 현재 작업 디렉토리와 함께 작동합니다.

희망이 도움이됩니다.

+0

Blah 나는 방금 당신이 쉽게 작동하도록 만들 수 없다는 것을 깨달았습니다. 나는 당신에게 내일 소스 코드를 줄 것이다. – Ben

+0

와우! 당신은 생명의 은인입니다. 나는 당신의 컴파일 된 코드를 실행하지 않았지만 이것은 정확히 내가 찾고있는 코드이다. 이 도구를 github에 놓으면 알려주세요. –

+0

github 위치는 다음과 같습니다. https://github.com/bpo217/refacto 이것이 도움이되는지 알려주세요! 내 주요 게시물을 수정하겠습니다. – Ben

0

레일은 리팩터링하기 쉽지 않습니다.

당신이 매우 자주도 아니고 대규모에서, 나는이 파일에 간단한 찾기를 권장하고 필요한 경우 대체 할 싶지 않아합니다. 예. 시간이 걸리지 만 도구를 찾고 배우는 것입니다. 나중에주의 깊게 변경하려는 도구의 변경 사항을 검토하려면

Sidenote : Netbeans은 검색 기능으로 인해 이러한 작업에 대한 개인적인 취향입니다. 특히 소스 컨트롤과 통합 된 경우 (좋은 사전 커밋 검토). OS-es (예 : Mac) 또는 프로그래밍 언어를 전환해야 할 때도 상당히 유용합니다.