Niezbędne skróty ułatwiające pracę, wzorce optymalizacji pamięci i techniki debugowania w codziennej pracy z Rails.
Optymalizacje zapytań i pamięci
1. pluck a map
pluck odpytuje kolumny bazy danych bezpośrednio, bez tworzenia instancji obiektów modeli ActiveRecord w pamięci:
# WOLNE: Tworzy w pamięci 10 000 obiektów User
User.all.map(&:email)
# SZYBKIE: Wybiera tylko kolumnę email jako tablicę ciągów znaków
User.pluck(:email)
2. Przetwarzanie wsadowe za pomocą find_each
Unikaj ładowania olbrzymich tabel do pamięci za jednym razem:
# Ładuje dane partiami po 1 000 rekordów
User.find_each(batch_size: 1000) do |user|
user.sync_with_crm
end
Skróty zwiększające produktywność w konsoli
# Pobranie wyniku ostatnio wykonanego wyrażenia
user = User.find(1)
_ # Zwraca obiekt user
# Testowanie wydajności i czasu wykonania w konsoli
Benchmark.ms { 1000.times { User.count } }
# Przeładowanie kodu aplikacji bez restartu konsoli
reload!
Aktualizacja znaczników czasu (touch)
Aktualizuj znacznik updated_at modelu nadrzędnego przy zmianie powiązanego rekordu potomnego:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end