检查在定制的Rails 3生成器内部使用了什么命令

问题描述

| 您如何判断是否已使用“ 0”或“ 1”命令来调用自定义生成器? 在Rails 2中,您可以这样做:
if options[:command] == :destroy
  ...
end
我想打印一些有用的信息,但是仅当调用
rails generate
时才打印,而在调用
rails destroy
时不打印:
if is_generating
  puts \"You\'re generated something!\"
end
谢谢。     

解决方法

检查生成器类的行为。看来您应该使用:invoke生成或:revoke销毁。例如,我添加了以下内容:
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\"
似乎可以正常使用,这就是我的最终答案。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...