Viktiga genvägar för produktivitet, mönster för minnesoptimering och felsökningstricks för daglig Rails-utveckling.
Fråge- och minnesoptimeringar
1. pluck vs map
pluck frågar databaskolumner direkt utan att instantiera ActiveRecord-modellobjekt i minnet:
# LÅNGSAMT: Instantierar 10 000 User-objekt i minnet
User.all.map(&:email)
# SNABBT: Hämtar endast email-kolumnen som en array av strängar
User.pluck(:email)
2. Batchbearbetning med find_each
Undvik att ladda enorma tabeller till minnet på en gång:
# Laddar i batcher om 1 000 poster
User.find_each(batch_size: 1000) do |user|
user.sync_with_crm
end
Produktivitetsgenvägar för konsolen
# Få tillgång till resultatet av det senast utvärderade uttrycket
user = User.find(1)
_ # Returnerar user-objektet
# Mät exekveringstid i konsolen
Benchmark.ms { 1000.times { User.count } }
# Ladda om Rails-applikationskod utan att starta om konsolen
reload!
Uppdatera tidsstämplar (touch)
Uppdatera en föräldramodells updated_at-tidsstämpel när en barnassociation uppdateras:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end