作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有几个经常通过 Rake 运行的 Cron 作业,这些作业的输出通过电子邮件发送(通过 MAILTO)。由于这些任务加载了 Rails 环境(包括 Erubis),它们总是在启动时打印出“** Erubis 2.6.5”。这意味着自 Cron 收到输出后,始终会生成一封电子邮件。有什么方法可以配置 Erubis 以停止将此启动消息打印到控制台?
最佳答案
使用此处的答案以及@michael-andrews 链接的答案,我对 Rails 2.3.14 项目进行了以下更改,无需更改我们的 gems 源代码。打开 config/boot.rb
并找到 Rails::Boot
类。您正在扩充 load_gems
方法:
class Rails::Boot
def run
load_initializer
Rails::Initializer.class_eval do
def load_gems
buffer = ""
previous_stdout, $stdout = $stdout, StringIO.new(buffer)
@bundler_loaded ||= Bundler.require :default, Rails.env
ensure
$stdout = previous_stdout
output = buffer.gsub(/^\*\* Erubis (\d+\.?)+\s*/, '')
puts output unless output.strip.empty?
end
end
Rails::Initializer.run(:set_load_path)
end
end
它的工作方式是我们在加载 gems 时重定向 $stdout,将流拉入本地缓冲区。然后我们在一切都完成后检查缓冲区,去除 Erubis 的标注,并显示任何其他可能发生的事情(不想错过任何我们不期望的事情!)。
关于ruby-on-rails - 启动Rails环境时,有没有办法禁止Erubis打印 "** Erubis 2.6.5"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766580/
我是一名优秀的程序员,十分优秀!