2011-04-13 2 views
2

generate 또는 destroy 명령어가 사용자 정의 생성기를 호출하는 데 사용되었는지 어떻게 알 수 있습니까?커스텀 레일즈 3 생성기에서 어떤 명령어가 사용되었는지 확인

if options[:command] == :destroy 
    ... 
end 

나는 몇 가지 유용한 정보를 인쇄 할,하지만 rails generate가 호출 된 경우에만, rails destroy를 호출하지 않을 때 :

if is_generating 
    puts "You're generated something!" 
end 

감사 레일에서

은 당신이 할 수있는 2 .

+0

이것은 무의미 해 보입니다.하지만 정말로 원하는 경우 http://railscasts.com/episodes/249-notifications-in-rails-3에서 트랙을 설정해야합니다. – jvatic

+0

@jvatic 어떤 점에서이 무의미한가요? 나는 내가 생각하는대로 통지를한다고 생각하지 않는다. 나는 단지 어떤 유형의 행동이 실행되고 있는지 알고 싶다. 특히 현재 파일을 생성하거나 삭제하고 있습니까? 그렇게하면 "이제 'XYZ.css'파일을 app/views/layouts/application.html.erb에 추가해야 할 필요가있는 정보를 사용자에게 출력 할 수 있습니다. (정확히 내가하는 일이 아니지만 그것의 요지입니다.) – Haydn

+0

나는 같은 질문을 가지고있다. 레일이 생성 될 때, config 엔트리를 추가합니다. 파괴 될 때 나는 config 항목을 제거합니다. (레일을 생성 할 때 레일스를 실행할 때) 엔트리를 추가하는 방법을 알 필요가있다. (레일스를 실행할 때 ...) – ynkr

답변

1

발전기 클래스의 동작을 확인하십시오. 그것은 당신이 중 하나를 가져야한다고 생각 : 생성을위한 호출 또는 : 파괴에 대한 취소. 예를 들어, 나는이 추가 :

class PatternGenerator < Rails::Generators::NamedBase 
    def echo_behavior 
    p "generate? #{generating?}" 
    p "destroying? #{destroying?}" 
    end 

    protected 

    def generating? 
    :invoke == behavior 
    end 

    def destroying? 
    :revoke == behavior 
    end 
end 

이 실행을, 내가 얻을 :

younker % rails g pattern foo  
"generate? true" 
"destroying? false" 
younker % rails destroy pattern foo 
"generate? false" 
"destroying? true" 

가 작동하는 것 같다 그리고 내 최종 답변, 그래서 의미가 있습니다.

+0

이'behavior' 메소드는 어디에 있는가? 이': invoke'와': revoke' 심볼은 어디에 정의되어 있습니까? – jordanpg

+0

@jordanpg의 동작은 다음과 같이 설정됩니다. invoke 또는 : revoke in revils [generate.rb] (https://github.com/rails/rails/blob/b0f8355d2813c375bf9242071131e8c5a350bcf0/railties/lib/rails/commands/generate.rb) 및 [destroy.rb] (https://github.com/rails/rails/blob/b0f8355d2813c375bf9242071131e8c5a350bcf0/railties/lib/rails/commands/destroy.rb). 돌이켜 보면 Rails :: Generators 패치가 조금 깔끔했을 수도 있습니다. 희망이 도움이됩니다. – ynkr

관련 문제