我正在尝试创建一个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
为什么它无法识别form
和box_api
。起初,我以为也许我错过了传递参数的哈希值。 {box_api:BoxApi.new,形式:...。}`也不起作用。
为什么抛出错误?
答案 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)