我正在处理的应用程序目前正在接收来自GitHub的webhooks。我们正在尝试执行以下操作:
raw_payload = request.raw_post
original_payload = JSON.parse(raw_payload)
然后original_payload
将是来自webhook的已解析原始数据。当我使用curl
命令发送webhook时,一切都在本地工作:找到原始数据,并解析JSON。但是,每当我把它放在我的暂存环境中并且它开始从GitHub获取真正的 webhooks时,它就会开始打破这个错误:
TypeError (no implicit conversion of nil into String):
json (1.8.3) lib/json/common.rb:155:in `initialize'
json (1.8.3) lib/json/common.rb:155:in `new'
json (1.8.3) lib/json/common.rb:155:in `parse'
在表示JSON.parse(raw_payload)
的行上,基本上意味着raw_payload
为零。什么情况会使request.raw_post
在暂存时返回nil,但在开发中正常工作?
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
弄清楚我自己的问题。问题发生在整个request.raw_post
事件中。虽然遗憾的是raw_post
返回nil
的真正原因仍然是一个谜(我们假设它与我们可以抓取它之前删除和刷新的webhook数据有关),我们确实找到了解决方法:
raw_parameters = request.request_parameters
然后我们可以像raw_parameters
那样获取值:
new_request[:github_action] = raw_parameters["action"]
此外,这样,如果没有raw_parameters["action"]
,则new_request
不会改变任何内容。这解决了我们所有的问题!
抱歉,我无法找到raw_post
返回nil
的确切原因!