我需要通过覆盖一个方法并添加一个我自己的方法来扩展插件。到目前为止,我已经遵循了Strictly Untyped's指南,但我没有取得多大成功。基本上,初始化文件夹中有一个文件,用于从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
但是当我尝试运行它时,它仍然无法识别我的更改。有什么想法吗?
答案 0 :(得分:0)
尝试交换require语句。
所以而不是
require 'amazon_extensions/question_generator_extendors.rb'
require 'amazon/webservices/mturk/question_generator.rb'
DO
require 'amazon/webservices/mturk/question_generator.rb'
require 'amazon_extensions/question_generator_extendors.rb'