如何解决检查在定制的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\"
似乎可以正常使用,这就是我的最终答案。