ruby-on-rails – 在Rake任务db:schema:load中抑制输出

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Rake任务db:schema:load中抑制输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何抑制db:load:schema的输出?运行
bundle exec rake db:schema:load

使用-s,-q或甚至VERBOSE = false选项在输出中没有区别;我不想看到同样的“create_table … add_index …”垃圾.我在自定义Rake任务中调用它,我不希望用户每次都看到所有这些.

更新:

我使用@Deefour的一些指导解决了这个问题:

system "bundle exec rake db:schema:load -s RAILS_ENV=#{Rails.env} >NUL"

> NUL适用于Windows机器,基于Unix的可以使用>的/ dev / null的.

而不是

Rake::Task['db:schema:load'].invoke

正如我在自定义任务中所做的那样.请注意,此解决方案特定于Windows计算机.对于基于Unix的机器,我想你应该能够使用下面接受的解决方案.

解决方法

这是一个跨系统工作的更清洁的解决方案:
silence_stream(STDOUT) do
  # anything written to STDOUT here will be silenced
  Rake::Task["db:schema:load"].invoke
end

quietly do
  # anything written to STDOUT or STDERR here will be silenced
  Rake::Task["db:schema:load"].invoke
end

我更喜欢silent_stream(STDOUT),因为它仍然允许显示写入STDERR的错误消息,这在rake命令开始动作时会很有用.

参考文献:silence_stream,silence_warnings,& quietly

猜你在找的Ruby相关文章