如何抑制db:load:schema的输出?运行
bundle exec rake db:schema:load@H_403_4@使用-s,-q或甚至VERBOSE = false选项在输出中没有区别;我不想看到同样的“create_table … add_index …”垃圾.我在自定义Rake任务中调用它,我不希望用户每次都看到所有这些. @H_403_4@更新: @H_403_4@我使用@Deefour的一些指导解决了这个问题:
system "bundle exec rake db:schema:load -s RAILS_ENV=#{Rails.env} >NUL"@H_403_4@> NUL适用于Windows机器,基于Unix的可以使用>的/ dev / null的. @H_403_4@而不是
Rake::Task['db:schema:load'].invoke@H_403_4@正如我在自定义任务中所做的那样.请注意,此解决方案特定于Windows计算机.对于基于Unix的机器,我想你应该能够使用下面接受的解决方案.
解决方法
这是一个跨系统工作的更清洁的解决方案:
silence_stream(STDOUT) do # anything written to STDOUT here will be silenced Rake::Task["db:schema:load"].invoke end@H_403_4@也
quietly do # anything written to STDOUT or STDERR here will be silenced Rake::Task["db:schema:load"].invoke end@H_403_4@我更喜欢silent_stream(STDOUT),因为它仍然允许显示写入STDERR的错误消息,这在rake命令开始动作时会很有用. @H_403_4@参考文献:silence_stream,silence_warnings,& quietly