2009-06-23 136 views
0

我需要通过覆盖一个方法并添加一个我自己的插件来扩展一个插件。到目前为止,我已经遵循Strictly Untyped's指南,但我没有取得太大的成功。基本上,初始化文件夹中有一个文件从lib目录中加载扩展名。扩展一个rails插件

在我的初始化文件夹,我有这样一个文件:在

require 'amazon_extensions/question_generator_extendors.rb' 
require 'amazon/webservices/mturk/question_generator.rb' 

Amazon::WebServices::MTurk::QuestionGenerator.class_eval do 
include Amazon::QuestionGeneratorExtendors 
end 

如果我打开,我想延伸,然后原班包括我的分机(亚马逊:: QuestionGeneratorExtendors)

然后lib /目录我有一个包含question_generator_extendors.rb一个amazon_extensions文件夹:

module Amazon 
    module QuestionGeneratorExtendors 

    def self.included(base) 
     base.class_eval {include InstanceMethods} 
    end 

    module InstanceMethods 
     def ask(*args) 
     case @type 
     when :Basic 
      askBasic(args.join) 
     when :Formatted 
      askFormatted(args.join) 
     end 
     end 

     def askFormatted(text) 
     id = "FormattedQuestion#{@questions.size+1}" 
     question = REXML::Element.new 'FormattedContent' 
     ... 
     end 
    end 
    end 
end 

但是当我尝试和运行这个它仍然会ñ不承认我的变化。有什么想法吗?

回答

0

尝试交换require语句。

所以不是

require 'amazon_extensions/question_generator_extendors.rb' 
require 'amazon/webservices/mturk/question_generator.rb' 

require 'amazon/webservices/mturk/question_generator.rb' 
require 'amazon_extensions/question_generator_extendors.rb'