почему я не могу использовать @env ['REMOTE_ADDR'] вне маршрута? - PullRequest
1 голос
/ 07 июня 2011

почему я не могу использовать @env['REMOTE_ADDR'] вне маршрута в Sinatra?

Я хочу, чтобы ip клиента был доступен для всего приложения Sinatra, чтобы я мог использовать его где угодно ...

 clients_ip = @env['REMOTE_ADDR']

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

1 Ответ

2 голосов
/ 07 июня 2011

В ответ на запрос запускаются только блоки маршрута. Код снаружи запускается один раз, когда устанавливается обработчик.

Вместо того, чтобы использовать переменную, вы можете делать то, что вы хотите, с методом, это гарантирует, что поиск в @env выполнен в правильной области.

def clients_ip
  @env['REMOTE_ADDR']
end

get '/' do
  # ... show something ...
  clients_ip
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...