为什么我不能在路线外使用@env ['REMOTE_ADDR']?

时间:2011-06-07 04:53:01

标签: ruby sinatra

为什么我不能在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

1 个答案:

答案 0 :(得分:2)

仅响应请求而运行路径块。设置处理程序时,外部代码运行一次。

不是使用变量,而是可以使用方法执行所需的操作,这可以确保@env中的查找在正确的范围内完成。

def clients_ip
  @env['REMOTE_ADDR']
end

get '/' do
  # ... show something ...
  clients_ip
end