0

我需要通过覆盖一个方法并添加一个我自己的方法来扩展一个插件。到目前为止,我一直遵循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

但是当我尝试运行它时,它仍然无法识别我的更改。有什么想法吗?

4

1 回答 1

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'
于 2009-06-25T20:38:24.503 回答