如何从Rails内部设置机架环境变量

时间:2015-07-08 12:34:32

标签: ruby-on-rails

rack-cache gem依赖于@env['rack.errors']设置来记录错误消息:

    78:       # write log message to rack.errors
    79:       if verbose?
    80:         binding.pry
    81:         message = "cache: [%s %s] %s\n" %
    82:           [@request.request_method, @request.fullpath, trace]
 => 83:         @env['rack.errors'].write(message)
    84:       end

目前设为@env['rack.errors'] #⇒ #<IO:<STDERR>>

我需要将其更改为使用Rails.logger。明显的机会是入侵rack-cache初始值设定项RAILS_CACHE.logger = ...。我想知道是否有一种从rack访问Rails环境的常用方法,如(伪代码):

Rails.RACK_ENV['rack.errors'] = Rails.logger

1 个答案:

答案 0 :(得分:0)

Rack环境只能在请求的上下文中访问,因此在控制器或视图中可以访问。

要访问环境,您可以使用

request.env['whatever']

修改Rack环境时要小心,因为Rails堆栈的其他部分可能依赖它。