耙:ArgumentError:未知关键字:传递方法参数时

时间:2019-06-20 14:39:08

标签: ruby rake rake-task

我正在尝试创建一个Rake任务的纯Ruby应用程序。我在文件src/lambda_function.rb中有一个方法,如下所示:

def self.process(event:, context: nil, box_api: BoxApi.new, form: nil, sns: SNS.new, kms: KMS.new)
            begin
                # verify request came from fromstack from headers
                verify_webhook_req(event)

                # parse data
                submission = JSON.parse(event["body"])
                form_id = submission.fetch("FormID").strip()
                submission_id = submission.fetch("UniqueID").strip()

从上面的片段中可以看到,该函数具有以下参数: event:, context:, box_api:, form:, sns:, kms:因此,在rake任务中,我传递了以下内容:

require './src/lambda_function.rb'
require 'rake'
require 'pry'
include Rake::DSL


class KMS
    def initialize
    end

    def decrypt(key)
       return 'some password'
    end
end

class SNS
    def initialize
    end
end

namespace :test do
  namespace :lambda do
    desc 'Run the Lambda process function'
    task :process  do
      TEST_FORM_ID=3353951
      LambdaFunctions::LambdaHandler.process(box_api: BoxApi.new,
                                             form: TEST_FORM_ID,
                                             sns: SNS.new,
                                             kms: KMS.new)
    end
  end
end

但是调用此rake任务会引发错误:

rake aborted!
ArgumentError: unknown keywords: box_api, form

为什么它无法识别formbox_api。起初,我以为也许我错过了传递参数的哈希值。 {box_api:BoxApi.new,形式:...。}`也不起作用。

为什么抛出错误?

1 个答案:

答案 0 :(得分:0)

我正在另一个具有不同参数的类中调用方法。

class WebhookHandler
            def self.process(event:, context: nil, box_api: BoxApi.new, form: nil, sns: SNS.new, kms: KMS.new)
                begin
                    # verify request came from fromstack from headers
                    verify_webhook_req(event)