我需要通过覆盖一个方法并添加一个我自己的方法来扩展一个插件。到目前为止,我一直遵循Strictly Untyped 的指南,但我没有取得太大的成功。基本上初始化文件夹中有一个文件,它从 lib 目录加载扩展。
在我的初始化程序文件夹中,我有一个文件:
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
在哪里加载我想要扩展的原始类,然后包含我的扩展(Amazon::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
但是当我尝试运行它时,它仍然无法识别我的更改。有什么想法吗?