任何人都可以使用ENV变量共享某些阻止列表测试用例,我发现在spec文件中,我们无法在rails中间件中更改env变量。
如果我们在规格文件中设置env变量。
stub_const('ENV', 'RACK_ATTACK_BLOCK_IP_LIST' => '1.1.1.1')
在application.yml文件中,有一个设置:
RACK_ATTACK_BLOCK_IP_LIST: '2.2.2.2'
如果运行测试用例并监视rake_attack.rb文件中的env值,则只能在侧安全列表块中获取新的env变量值“ 1.1.1.1”,例如:
blocklist('block_ip_list') do |req|
block_ip_list = ENV['RACK_ATTACK_BLOCK_IP_LIST'].try(:split, /,\s*/) || []
block_ip_list.include?(req.ip)
end
如果我们将safe_ip_list从safelist块中移出,它仍将为“ 2.2.2.2”
block_ip_list = ENV['RACK_ATTACK_BLOCK_IP_LIST'].try(:split, /,\s*/) || []
blocklist('block_ip_list') do |req|
block_ip_list.include?(req.ip)
end