【问题标题】:What is the difference between 'env' and 'request.env' in Rails Controller?Rails 控制器中的“env”和“request.env”有什么区别?
【发布时间】:2021-07-12 15:28:12
【问题描述】:

我正在使用rspec 为我的应用程序编写测试。为了授权,我在标题中发送token

request.headers['token'] = '000000099'
get :index

在控制器端,我可以通过request.env["HTTP_TOKEN"] 读取此值,但env["HTTP_TOKEN"] 为空。

它们之间有什么区别,如何设置env 而不是request.env

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    request.env 是一个 ruby​​ 哈希,其中包含有关访问用户和服务器环境的信息。 request.env 是 Rails 应用程序中用于提取重要信息的标准对象,例如 path_inforequest_uri 等。

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

    【讨论】:

    • 能否请您发布一些示例代码,您在哪里以及如何使用env
    • 像这样:env["HTTP_TOKEN"] 在我的控制器中。
    • 那么,它对您的测试不起作用?否则它有效吗?
    • env 对于您的测试是空的,因为 rspec-rails 绕过了 ActionController::Metal 调度方法。有关更多信息,请参阅此帖子:stackoverflow.com/questions/8990419/…
    • env 已被弃用,取而代之的是 request.env 用于 Rails5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2016-10-06
    • 2021-06-10
    • 2012-05-07
    相关资源
    最近更新 更多