你怎么能抑制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
就像我在自定义任务中所做的一样。 请注意,此解决scheme是特定于Windows机器。 对于基于Unix的机器,我想你应该能够使用下面接受的解决scheme。
这是一个更清洁的解决方案,跨作用于系统:
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
我更喜欢silence_stream(STDOUT)
,因为它仍然允许显示写入STDERR
错误消息,这在rake命令开始执行时会很有帮助。
参考文献: silence_stream , silence_warnings ,& 悄悄地
不要用Rake::Task['...'].invoke
,你可以在子shell中运行命令,将输出重定向到/dev/null
。
system "bundle exec rake db:schema:load > /dev/null 2>&1"