扩展rails插件

时间:2009-06-23 15:51:42

标签: ruby-on-rails ruby plugins mechanicalturk

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

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

1 个答案:

答案 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'