加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在启动Rails环境时,有没有办法禁止Erubis打印

发布时间:2020-12-17 02:58:37 所属栏目:百科 来源:网络整理
导读:我有几个频繁的Cron工作,通过Rake运行,这些工作的输出通过电子邮件发送(通过MAILTO).由于这些任务加载了Rails环境(包括Erubis),因此它们总是在启动时打印出“** Erubis 2.6.5”.这意味着,自Cron接收输出后,始终会生成电子邮件.有没有办法配置Erubis停止打印
我有几个频繁的Cron工作,通过Rake运行,这些工作的输出通过电子邮件发送(通过MAILTO).由于这些任务加载了Rails环境(包括Erubis),因此它们总是在启动时打印出“** Erubis 2.6.5”.这意味着,自Cron接收输出后,始终会生成电子邮件.有没有办法配置Erubis停止打印此启动消息到控制台?

解决方法

使用这里的答案以及@ michael-andrews链接的答案,我对我们的Rails 2.3.14项目进行了以下更改,该项目不需要更改我们的宝石源.打开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

这种方式的工作方式是我们在加载gem时重定向$stdout,将流拉入本地缓冲区.然后我们在一切都完成后检查缓冲区,去除Erubis的标注,并显示可能发生的任何其他事情(不想错过我们没想到的任何东西!).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读