Essentiële productiviteitssneltoetsen, patronen voor geheugenoptimalisatie en foutopsporingstrucs voor dagelijkse Rails-ontwikkeling.
Query- & Geheugenoptimalisaties
1. pluck versus map
pluck doorzoekt databasekolommen rechtstreeks zonder ActiveRecord Ruby-modelobjecten in het geheugen te instantiëren:
# TRAAG: Instantieert 10.000 User-objecten in het geheugen
User.all.map(&:email)
# SNEL: Selecteert alleen de kolom email als een array van strings
User.pluck(:email)
2. Batchverwerking met find_each
Voorkom dat enorme tabellen in één keer in het geheugen worden geladen:
# Laadt in batches van 1.000 records
User.find_each(batch_size: 1000) do |user|
user.sync_with_crm
end
Console-productiviteitssneltoetsen
# Toegang tot het resultaat van de laatst geëvalueerde expressie
user = User.find(1)
_ # Geeft het user-object terug
# Uitvoeringstijd meten in console
Benchmark.ms { 1000.times { User.count } }
# Rails-applicatiecode opnieuw laden zonder de console te herstarten
reload!
Tijdstempels bijwerken (touch)
Werk de updated_at-tijdstempel van een bovenliggend model bij wanneer een onderliggende associatie verandert:
class Comment < ApplicationRecord
belongs_to :article, touch: true
end