2012-03-20 14 views
5

Nie widzę tego w dokumentach, ale zakładam, że to rozwiązany problem.Jak uczynić ActiveRecord :: Schema.define nie logować się na standardowe wyjście?

Używam ActiveRecord poza Railsami, a mój skrypt ładuje schemat schema.rb zrzucony z innej aplikacji. Chcę załadować ten schemat bez zrzucania danych wyjściowych migracji do standardowego wyjścia, ale zastąpienie ActiveRecord :: Base.logger nie powoduje jego zamknięcia. Co powinienem zastąpić, aby zatrzymać hałas?

Odpowiedz

8

Sztuką jest najwyraźniej w ActiveRecord :: Migration:

ActiveRecord::Migration.verbose = false 

To sprawia, że ​​migracje nie wyjściowe informacje do $ stdout. Jest to metoda zwana .suppress_messages wygoda wrapper, który można używać tak:

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

i tak, jest to udokumentowane w ramach migracji (ale nie w ramach schematu, gdzie szukałem).

0

może

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

Nie. Próbowałem tego. Zastąpienie ActiveRecord :: Base.logger nie zamyka tego. – regularfry

+0

Hm. Edytowałem to trochę. – fl00r

+0

Czy próbowałeś tego? – regularfry

Powiązane problemy