如何让ActiveRecord :: Schema.define不登录到stdout?

时间:2012-03-20 12:36:00

标签: ruby-on-rails ruby activerecord

我在文档中看不到这一点,但我认为这是一个已解决的问题。

我在Rails之外使用ActiveRecord,我的脚本加载从另一个应用程序转储的schema.rb。我想加载此架构而不将迁移输出转储到stdout,但替换ActiveRecord :: Base.logger不会将其关闭。我最重要的是要阻止噪音?

2 个答案:

答案 0 :(得分:8)

诀窍显然是在ActiveRecord :: Migration中:

ActiveRecord::Migration.verbose = false

这使得迁移不是输出信息到$ stdout。有一个名为.suppress_messages的便捷包装方法,您可以这样使用:

ActiveRecord::Migration.suppress_messages do
  load("path/to/schema.rb")
end

是的,这是在迁移下记录的(但不是Schema,我正在寻找)。

答案 1 :(得分:0)

也许

ActiveRecord::Base.logger = begin
  l = Logger.new('/dev/null')
  l.level = Logger::FATAL
  l
end