【发布时间】:2019-11-03 10:00:22
【问题描述】:
我正在开发一个纯 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()
从上面的 sn-p 可以看出,该函数接受以下参数:
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, form: ....}` 这也不起作用。
为什么会抛出错误?
【问题讨论】: