У меня такая же проблема, что мое приложение работало в Vs2013, но получило ошибку после обновления до Vs2015.
Нет, к сожалению, никакого реального способа сделать это, по крайней мере, не на большинстве версий Ruby там (изменения могут существовать), за исключением контроля программы производит и прерывание его, когда предупреждение появляется на стандартной погрешности. Вот то, почему:
Kernel.warn
, который Вы можете переопределять , чтобы сделать независимо от того, что Вы желаете (включая выход), и который Вы были бы ожидать (надежда) последовательно использоваться Ruby для создания отчетов о предупреждениях (включая внутреннее, например, анализирующее предупреждение), , но rb_warn
от source/server.c
, полностью обход переопределения Kernel.warn
(например," string literal in condition
" предупреждение, например, выпущенный при выполнении чего-то как: do_something if 'string'
, печатается через собственный компонент rb_warn
от source/parse.c
) rb_warning
собственный метод, который может использоваться Ruby для входа предупреждений, если -w
или -v
определяется. Так, если необходимо принять меры только на предупреждениях, сгенерированных вызовом кода приложения Kernel.warn
тогда просто, переопределяют Kernel.warn
. Иначе у Вас есть точно две опции :
source/error.c
для выхода в [1 114] и rb_warning
(и rb_warn_m
?), и восстанавливают Ruby: warning:
' и прерывают его на соответствии Вы также можете потенциально использовать DTrace и перехватывать вызовы к rb_warn
и rb_warning
, хотя это не приведет к исключениям, которые можно где-то спасти. Скорее, он просто поместит их куда-нибудь, и вы сможете легко их зарегистрировать.