2012-03-20 9 views
5

Non riesco a vedere questo nei documenti, ma presumo che sia un problema risolto.Come posso rendere ActiveRecord :: Schema.define non accedere allo stdout?

Uso ActiveRecord all'esterno di Rails e il mio script carica uno schema.rb scaricato da un'altra app. Voglio caricare questo schema senza scaricare l'output di migrazione su stdout, ma la sostituzione di ActiveRecord :: Base.logger non lo blocca. Cosa dovrei ignorare per fermare il rumore?

risposta

8

Il trucco è apparentemente in ActiveRecord :: Migrazione:

ActiveRecord::Migration.verbose = false 

Questo rende le migrazioni non informazioni di uscita a $ stdout. C'è un metodo comodo involucro chiamato .suppress_messages, che può essere utilizzato in questo modo:

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

E sì, questo è documentato in migrazione (ma non sotto dello schema, in cui stavo cercando).

0

forse

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

No. Ho provato questo. Sostituire ActiveRecord :: Base.logger non lo spegne. – regularfry

+0

Hm. L'ho modificato un po '. – fl00r

+0

Hai provato questo? – regularfry

Problemi correlati