Scurtături esențiale de productivitate, modele de optimizare a memoriei și trucuri de depanare pentru ingineria zilnică în Rails.
Optimizări de memorie și interogare
1. pluck vs map
pluck interoghează direct coloanele bazei de date fără a instanția obiecte ActiveRecord în memorie:
# LENT: Instanțiază 10.000 de obiecte User în memorie
User.all.map(&:email)
# RAPID: Selectează doar coloana email ca tablou de șiruri
User.pluck(:email)
2. Procesare în loturi cu find_each
Evitați încărcarea tabelelor masive în memorie dintr-o dată:
# Încarcă în loturi de 1.000 de înregistrări
User.find_each(batch_size: 1000) do |user|
user.sync_with_crm
end
Scurtături de productivitate în consolă
# Acces la rezultatul ultimei expresii evaluate
user = User.find(1)
_ # Returnează obiectul user
# Măsurarea timpului de execuție în consolă
Benchmark.ms { 1000.times { User.count } }
# Reîncărcarea codului aplicației fără repornirea consolei
reload!
Actualizarea marcajelor de timp (touch)
Actualizați timestamp-ul updated_at al modelului părinte atunci când o asociere copil se modifică:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end