开发者

Check what command was used inside a custom Rails 3 generator

How can you tell if a generate or destroy command has been used to invoke a custom generator?

In Rails 2 you could do this:

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

I want to print out some helpful information, but only when rails generate has been called, not when rai开发者_开发技巧ls destroy is called:

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

Thanks.


check the generator class's behavior. It seems you should get either :invoke for generate or :revoke for destroy. For example, I added this:

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

Running this, I get:

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

Seems to work and makes sense, so that's my final answer.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜