我已經構建了一個使用多個外部寶石的Thor CLI應用程序。當我運行它時,我收到來自那些混亂我的輸出的寶石的警告消息 - 我怎麼能抑制這一點?抑制Thor CLI應用程序中的警告消息
澄清:我希望抑制警告僅消息,但仍收到標準輸出爲我的應用程序,包括錯誤和puts
結果。
例如,當我在我的Sinatra應用程序中使用這些相同的寶石時,我沒有像我對雷神那樣從寶石代碼中發出所有警告消息。
例(從http://willschenk.com/making-a-command-line-utility-with-gems-and-thor/派生)
require 'thor'
require 'safe_yaml'
module Socialinvestigator
class HammerOfTheGods < Thor
desc "hello NAME", "This will greet you"
long_desc <<-HELLO_WORLD
`hello NAME` will print out a message to the person of your choosing.
HELLO_WORLD
option :upcase
def hello(name)
greeting = "Hello, #{name}"
greeting.upcase! if options[:upcase]
puts greeting
end
end
end
在這種情況下,因爲我們需要safe_yaml
寶石,每次我們運行一個命令,我們會得到我們的輸出以下警告:
/usr/local/lib/ruby/gems/2.3.0/gems/safe_yaml-1.0.4/lib/safe_yaml.rb:28: 警告:方法重新定義;丟棄舊的safe_load /usr/local/Cellar/ruby/2.3.0/lib/ruby/2.3.0/psych.rb:290:警告: safe_load的先前定義是在這裏 /usr/local/lib/ruby/gems/2.3.0/gems/safe_yaml-1.0.4/lib/safe_yaml.rb:52: warning:重新定義方法;丟棄舊LOAD_FILE /usr/local/Cellar/ruby/2.3.0/lib/ruby/2.3.0/psych.rb:470:警告: 以前LOAD_FILE的定義在這裏
我們使用許多不同的寶石,並得到一整串警告,這些警告正在混淆我們的輸出...
這將是很好的有一個代碼示例玩? –
[KISS](https://en.wikipedia.org/wiki/KISS_principle)解決方法:修復警告。 – Blacksilver