Это предупреждение, а не ошибка. Вы можете спокойно проигнорировать это, и вы ничего не можете сделать, чтобы предотвратить его появление без редактирования исходного кода rack
. Если предупреждение выдает ошибку, вы всегда можете временно отключить Ruby этим методом из Rails:
def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
end
silence_stream(STDERR) do
silence_stream(STDOUT) do
require 'sinatra'
end
end
# rest of code as usual...
Или заблокировать только предупреждения вместо всех потоков stderr и stdout:
verbose = $VERBOSE
$VERBOSE = nil
require 'sinatra'
$VERBOSE = verbose
# rest of code as usual...
Если это не сработает, то вы, вероятно, блокируете не ту часть кода. Поскольку стойка вызывает предупреждение, я предполагаю, что это происходит, когда стойка требуется впервые. Вероятно, это делается с помощью Синатры для вас, поэтому я говорил блокировать предупреждения на время, требующие синатры. Вы можете попробовать поместить остальные свои require
в строки, расположенные рядом с require 'sinatra'
в любом из вышеперечисленных.