Rake: ArgumentError: неизвестные ключевые слова: при передаче параметров метода - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над чистым Ruby-приложением, в котором я пытаюсь создать задачу Rake. У меня есть метод в файле 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: Итак, в задании на грабли я передаю следующее:

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 aborted!
ArgumentError: unknown keywords: box_api, form

Почему он не распознает form и box_api. Сначала я подумал, что, возможно, мне не хватает хеша для передачи аргументов. {box_api: BoxApi.new, form: ....} `это тоже не сработало.

Почему выдает ошибку?

1 Ответ

0 голосов
/ 20 июня 2019

Я вызывал метод в другом классе, у которого были другие параметры.

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)
...