ruby-on-rails - 启动Rails环境时,有没有办法禁止Erubis打印 "** Erubis 2.6.5"?

标签 ruby-on-rails ruby rake erubis rakefile

我有几个经常通过 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/

相关文章:

ruby-on-rails - 无法在 OS X Mountain Lion 上安装 RMagick

ruby - 如何在给定数组中的某个元素的情况下找到下一个元素

ruby-on-rails - Bundler寻找旧版 gem

类似页面部分的 Ruby PageObject 设计

ruby - Redmine 安装问题 Ubuntu 12.04

ruby-on-rails - rake 中止!名称错误 : uninitialized constant Users

ruby-on-rails - 同时创建两个依赖模型

ruby-on-rails - 我可以使用Docker进行Rails应用程序的生产部署吗?

ruby-on-rails - 如何使用 YARD 记录 Rake 任务?

ruby-on-rails - rvm ruby​​ 1.9.2 和 Rails 3.1 无法启动服务器