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

时间:2012-01-24 16:30:04

标签: ruby-on-rails ruby rack rspec-rails

在我的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哈希为空?

我已经构建了一个dummy rails应用来展示这个

1 个答案:

答案 0 :(得分:10)

使用

request.env

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

e.g /

def index
  puts request.env.inspect
end

希望有帮助吗?

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