Rails控制器中'env'和'request.env'有什么区别?

Ali*_*.Kh 8 rspec ruby-on-rails

我正在rspec为我的应用程序编写测试.为了授权我发送token标题:

request.headers['token'] = '000000099'
get :index
Run Code Online (Sandbox Code Playgroud)

在控制器端,我可以读取该值request.env["HTTP_TOKEN"]但是env["HTTP_TOKEN"]为空.

它们之间有什么区别,我该怎么设置env而不是request.env

K M*_*lam 7

request.env是一个ruby数组,包含有关访问用户和服务器环境的信息.request.env是,在Rails应用程序被用来提取重要信息,如标准的对象path_info,request_uri

env对于您的测试是空的,因为rspec-rails绕过了ActionController::Metal调度方法.

  • `env`已被弃用,转而使用Rails5的`request.env` (2认同)