У меня есть API файл Синатры, который следующий код-доступ рубин Instance Переменный Включенного модуль
require 'json'
require_relative 'api_logger'
include ApiLogger
get /myapi/:id
request_params = request.env
write_log('log message')
end
Тогда у меня есть модуль, содержащего
module ApiLogger
def write_log(message)
file.write(request['user']+message)
end
Но запрос методы «write_log'- [ 'user'] выходит пустым.
Вопрос в том, как получить доступ к переменной запроса из файла API Sinatra в модуле ApiLogger? Кроме того, я создаю объекты класса обслуживания из класса API и передаю им объект запроса при инициализации. Может ли модуль «ApiLogger» получить доступ к переменной экземпляра «запрос» из класса обслуживания, если классы обслуживания включают «ApiLogger»?
Да, объект 'request' является локальным для маршрутизации блоков (' get', 'Post' и другие Sinatra методов DSL), так это не видно снаружи. Самый чистый способ решить это - следовать этому ответу. – Kashyap