4

Rake 経由で実行される Cron ジョブがいくつか頻繁にあり、それらのジョブの出力は (MAILTO 経由で) 電子メールで送信されます。これらのタスクは Rails 環境 (Erubis を含む) をロードするため、起動時に常に "** Erubis 2.6.5" が出力されます。これは、Cron が出力を受け取るため、常に電子メールが生成されることを意味します。この起動メッセージをコンソールに出力しないように Erubis を設定する方法はありますか?

4

4 に答える 4

2

更新: 以下の解決策は数​​年前のもので、Rail 2 が新しく、プラグインがまだ一般的だったときに適用されます。gem を使用する方が優れた標準的なソリューションであるため、以下の回答は新しいアプリには適用できなくなりました。代わりに、@TALlama が投稿したソリューションが機能します。ただし、アプリが古くてまだプラグインを使用している場合の有効なソリューションであるため、この回答をここに残しておきます。

rails_xss プラグインを変更して、このメッセージを削除できます。プラグインの問題部分は「/plugins/rails_xss/lib/rails_xss/erubis.rb」にあります。ファイルの一番上に必要なものがあります。

require 'erubis/helpers/rails_helper'

この require を変更して、require の前に標準出力をダミーの IO に単純にリダイレクトし、完了したら標準出力を復元します。次のようにします。

stdout_original, $stdout = $stdout, StringIO.new
require 'erubis/helpers/rails_helper'
$stdout = stdout_original

醜いですが、比較的邪魔にならない方法で問題を解決します。OPと同様の問題があり、「スクリプト/実行」プロセスの出力を別のプロセスにパイプする必要があり、erubisはレールコンポーネント/プラグインがstdoutフロントでサイレントであるという慣習を無礼に破っていました(まさにこの理由で) . 上記の解決策は私が思いついたものであり、私にとってはうまくいきます。

于 2010-08-20T17:12:11.233 に答える
1

erubis で rails_helper.rb を再定義する必要があります - これらは問題のある行です:

## finish
ActionController::Base.new.logger.info "** Erubis #{::Erubis::VERSION}"
$stdout.puts "** Erubis #{::Erubis::VERSION}" if rails22

そのファイルの内容を新しいファイルにコピーし、ロギング行を削除して、erubis が提供する代わりに better_rails_helper を要求することをお勧めします。. `

于 2010-06-30T23:33:49.017 に答える
1

これらのプル リクエストをサポートすると、モンキー パッチなしで入手できます

https://github.com/rails/rails_xss/pull/14 (rails_xss 公式プラグイン)

https://github.com/joloudov/rails_xss/pull/1 (rails_xss gem 用)

于 2012-08-19T01:10:51.307 に答える