为什么我不能在Sinatra的路线外使用@env['REMOTE_ADDR']
?
我希望我的整个Sinatra应用程序可以使用客户端的IP,所以我可以在任何地方使用它...
clients_ip = @env['REMOTE_ADDR']
get '/' do
.. show something ..
clients_ip
end
get '/page1' do
.. show something ..
clients_ip
end
答案 0 :(得分:2)
仅响应请求而运行路径块。设置处理程序时,外部代码运行一次。
不是使用变量,而是可以使用方法执行所需的操作,这可以确保@env
中的查找在正确的范围内完成。
def clients_ip
@env['REMOTE_ADDR']
end
get '/' do
# ... show something ...
clients_ip
end