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的标注,并显示可能发生的任何其他事情(不想错过我们没想到的任何东西!). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |