如何抑制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命令开始动作时会很有用.