如何抑制DDL日志

时间:2012-04-28 01:06:23

标签: mysql ruby-on-rails ruby activerecord rspec

我正在编写一个以“非标准”方式使用MySQL的应用程序。它严重依赖于动态创建/删除的表。

到目前为止它运作正常。不过,这些规格并没有让我高兴。每当我运行它们时,我都会得到大量的activerecord的ddl日志消息。亲眼看看:

SqlDailyEvents
-- create_table("11_daily_events_20120428")
   -> 0.0032s
  should create and drop a table
-- create_table("11_daily_events_20120428")
   -> 0.0030s
  should not create the same table twice
  should not drop the same table twice

那是--format d--format p看起来更糟糕!

如何关闭它?此日志似乎不受ActiveRecord::Base.logger(我尝试设置为nil)的影响。

1 个答案:

答案 0 :(得分:1)

使用操纵$stdout 的内核方法删除代码)

毕竟是ActiveRecord。似乎如果您使用“新”方式(使用change方法而非up / down对)定义迁移,则不会向您发送垃圾邮件。无论如何,它有一个类似的方法,但它操纵了Migration的详细程度,而不是$stdout

现在我的代码看起来像这样:

  def up
    # built-in method. sets verbose flag to false
    suppress_messages do
      create_table table_name do |t|
        t.column :username, :string
      end
    end
  end