8

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 ベースのマシンの場合、以下の受け入れられたソリューションを使用できるはずです。

4

2 に答える 2

27

これは、クロスシステムで機能するよりクリーンなソリューションです。

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)。これは、rake コマンドが動作し始めたときに役立ちます。quietlySTDERR

参照: Silence_streamSilence_warnings、 &静かに

于 2013-12-31T18:02:22.827 に答える
4

でタスクを呼び出す代わりにRake::Task['...'].invoke、サブシェルでコマンドを実行して、出力を にリダイレクトできます/dev/null

system "bundle exec rake db:schema:load > /dev/null 2>&1"
于 2012-08-22T19:43:31.567 に答える