2009-07-09 76 views
2

我想重写高架的几种方法来定制自己的控制台,此刻我的代码如下所示:红宝石替代类<<事情

 cmd = ask("#{@prompt_label} #{@prompt_separator} ", @tab_completion_candidates) do |q| 
      q.readline = true 

      # rewriting the Question class to make it do what we want 
      class << q 
       HERE I WRITE MY CODE 
      end 
     end 

我希望能够从我的分离改变我的主控制台文件,所以我们说,我有一类控制台:问一个包含所有我想在海莱::控制台做的修改,我希望能够做这样的事情:

Console::Question << q 
end 

但不幸的是,这不起作用:)

任何解决方案?

谢谢你的时间。

回答

3

如果你把你的变化的模块中,而不是一类,那么你可以再做

q.extend(YourModule) 

例如覆盖valid_answer?

module QuestionCustomisations 
    def valid_answer? 
    # your code here 
    end 
end 

q.extend(QuestionCustomisations) 

这将适用于只是被传递到块的对象实例更改。

+0

感谢那:) – Benjamin 2009-07-09 09:07:03