Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 异常通知缺少rack.input_Ruby On Rails - Fatal编程技术网

Ruby on rails 异常通知缺少rack.input

Ruby on rails 异常通知缺少rack.input,ruby-on-rails,Ruby On Rails,当我尝试在Rails 3中使用异常通知插件时 项目,我得到这个错误 Missing rack.input 此错误发生在 /vendor/plugins/exception_notification/lib/exception_notifier/views/exception_notifier/_request.text.erb at line 3 这是_request.text.erb文件 1: * URL : <%= raw @request.url %> 2: *

当我尝试在Rails 3中使用异常通知插件时 项目,我得到这个错误

Missing rack.input
此错误发生在

/vendor/plugins/exception_notification/lib/exception_notifier/views/exception_notifier/_request.text.erb
at line 3
这是_request.text.erb文件

1: * URL       : <%= raw @request.url %>
2: * IP address: <%= raw @request.remote_ip %>
3: * Parameters: <%= raw @request.filtered_parameters.inspect %>
4: * Rails root: <%= raw Rails.root %>
1:*URL:
2:*IP地址:
3:*参数:
4:*Rails根目录:
在我的应用程序中,我没有在任何地方过度使用它。请帮忙。困在这里
在一整天的错误中

当env哈希出现问题时,可能会发生此错误

我今天收到了“丢失机架.输入”错误。我试图强制ExceptionNotifier在一个救援区块内发送电子邮件,然后让我的应用程序正常恢复。但我无意中写道:

ExceptionNotifier::Notifier.exception_notification(Rails.env, e).deliver
何时应该:

ExceptionNotifier::Notifier.exception_notification(request.env, e).deliver
也就是说,我发送的是Rails.env,它只是一个字符串,而不是request.env,它是包含rack.input对象的散列


希望这能帮助任何有类似rack.input问题的人。

我知道这是一个老问题。但万一有人看到这一点,它会有所帮助。我最近在与内部API通信时看到了“Missing rack.input”错误。我们尝试做的一件事是通过如下操作,仅使用最小的http头进行响应:

def set_env_data
  env = request.env.to_hash
  env.delete_if { |k, v| k == k.downcase }
  @sample_model.env = env
end
我们想去掉框架设置的标题。虽然我们的通信正常,但我们会在堆栈跟踪中看到“缺少rack.input”。在这个特定的案例中,这是因为我们丢失了action\u dispatch设置的请求\u id。所以我们改变了:

env.delete_if { |k, v| k == k.downcase }
致:

最终我认为,既然现在我们只删除了几个标题,那么我们就可以将所有内容发送回去。如果您在框架内遇到错误,则很难进行调试。我将首先寻找您可能正在改变框架的通信方式的地方。希望有人觉得这很有用

env.delete_if { |k, v| k == k.downcase && !k.starts_with?('rack') && !k.starts_with?('action_dispatch') }