为什么Rails测试环境中的机架env哈希是空的?

在我的Rails应用程序中,我正在访问我的一个控制器操作中的env哈希。

有点像:

def my_before_filter env['some.key'] = "Something or other" end 

这对我的要求非常有用。

如果我在测试环境中启动我的Rails应用程序,并访问如下操作:

 # /users in UsersController#index def index puts env.inspect end 

然后,env哈希的内容按预期输出到控制台。

当我从RSPec示例中获取此操作时,输出是空哈希?

 it 'should get the index action' do get :index end .....{}.... # rspec output 

为什么env哈希是空的?

我已经构建了一个虚拟轨道应用来展示这一点

使用

 request.env 

而不仅仅是控制器代码中的env。

例如/

 def index puts request.env.inspect end 

希望有帮助吗?

另请注意:在使用github repo时,您需要在运行服务器时删除public / index.html以使根路由起作用。