Я пытаюсь запустить маршрут каждые 5 секунд, используя Rufus Scheduler в приложении Sinatra; с предлагаемым здесь решением (Calling Sinatra from within Sinatra).Sinatra не регистрируется при вызове другого маршрута
Все работает нормально, за исключением того, что Logger ничего не записывает, когда маршрут вызывается планировщиком.
require 'sinatra/base'
require 'rufus/scheduler'
class App < Sinatra::Base
configure do
enable :logging
end
Rufus::Scheduler.new.every("5s") do
call(
'REQUEST_METHOD' => 'GET',
'PATH_INFO' => '/test',
'rack.input' => StringIO.new,
)
end
get '/test' do
puts env["rack.logger"].inspect
logger.info "This is a logger test."
end
run!
end
Вот результат при вызове Curl без планировщика:
#<Logger:0x0000000249a9d8 @progname=nil, @level=1, @default_formatter=#<Logger::Formatter:0x0000000249a9b0 @datetime_format=nil>, @formatter=nil, @logdev=#<Logger::LogDevice:0x0000000249a8c0 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x0000000249a870 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x0000000249a7d0>>>>
I, [2015-01-15T20:49:36.365062 #15803] INFO -- : This is a logger test.
127.0.0.1 - - [15/Jan/2015 20:49:36] "GET /test HTTP/1.1" 200 - 0.0011
И при вызове метода вызова():
#<Logger:0x000000024b8a78 @progname=nil, @level=1, @default_formatter=#<Logger::Formatter:0x000000024b89b0 @datetime_format=nil>, @formatter=nil, @logdev=nil>
Is кажется, что записывающее устройство в объект Logger пуст.
Любые идеи или другие способы достижения этого?
Спасибо,
Что происходит, когда вы положили планировщик из картины? Тот же выход журнала? – jmettraux
Все в порядке без планировщика. –