Czy istnieje sposób na wyłączenie rejestrowania zapytań SQL, gdy wykonuję polecenia w konsoli? Idealnie byłoby świetnie, gdybym mógł po prostu wyłączyć i ponownie włączyć za pomocą polecenia w konsoli.
Próbuję coś debugować i za pomocą polecenia „puts” wypisuję odpowiednie dane. Jednak dane wyjściowe zapytania SQL utrudniają odczytanie.
Edycja: Znalazłem inne rozwiązanie, ponieważ ustawienie loggera na zero czasami powodowało błąd, jeśli coś innego niż mój kod próbował wywołać logger.warn
Zamiast ustawiać rejestrator na nil
, możesz ustawić poziom rejestratora na 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
gylaz
źródło
źródło
since setting the logger to nil sometimes raised an error
yap .. Mam ten przy próbie uruchomieniarake db:migrate
stackoverflow.com/questions/1719212/…Odpowiedzi:
Aby to wyłączyć:
Aby ponownie włączyć:
źródło
.irbrc
, który jest w zasadzie.bashrc
dla konsoli Rails. w rzeczywistości możesz zrobić wszystko,.irbrc
jeśli chcesz, np. kolorowanie składni, historię, edycję kodu w vi, a następnie wykonanie go w konsoli Rails itp. sprawdź mój klejnot,utility_belt
jeśli korzystasz z Ruby 1.8 lub Ruby 1.9 o nazwieflyrb
.irbrc
to jak.bashrc
, ale rzeczywiście za rubinowym interaktywnej poleceń. To nie jest sprawa szyn. Wyobrażam sobie, że prawdopodobnie wystąpiłyby błędy, gdybyś próbował odwoływać się do klas szyn, gdy działałeś IRB poza środowiskiem szyn.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
jest znacznie lepszą odpowiedzią, ponieważ nie spowoduje wyjątków, jeśli użyjesz .info i innych.Oto wariant, który uważam za nieco czystszy, który wciąż pozwala na potencjalne inne logowanie z AR. W config / environment / development.rb:
źródło
To może nie być odpowiednie rozwiązanie dla konsoli, ale Railsy mają metodę na ten problem: Logger # silence
źródło
W przypadku Rails 4 możesz umieścić w pliku środowiska:
źródło
W przypadku gdy ktoś chce rzeczywiście wybić rejestrowanie instrukcji SQL (bez zmiany poziomu rejestrowania i przy zachowaniu rejestrowanie ze swoich modeli AR):
Linia, która pisze w dzienniku (w Rails 3.2.16, w każdym razie) jest wywołanie
debug
wlib/active_record/log_subscriber.rb:50
.Ta metoda debugowania jest zdefiniowana przez
ActiveSupport::LogSubscriber
.Abyśmy mogli wyeliminować rejestrowanie, nadpisując je w następujący sposób:
źródło
Rails.logger.debug
instrukcje.Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Należy pamiętać, że niektórzy nie znoszą łapania małp. Prawdopodobnie nie powinien tego sprawdzać w kodzie produkcyjnym.Użyłem tego:
config.log_level = :info
edycjaconfig/environments/performance.rb
Działa świetnie dla mnie, odrzucając dane wyjściowe SQL i pokazuje tylko rendering i ważne informacje.
źródło
W Rails 3.2 robię coś takiego w config / environment / development.rb:
źródło
Podobnie jak w przypadku FYI, w Rails 2 możesz to zrobić
Oczywiście,
do end
jeśli chcesz, kręcone szelki można zastąpić blokiem.źródło