Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sequel para ActiveRecord heavy-users

Sequel para ActiveRecord heavy-users

Existem alternativas simples ao ActiveRecord que irão economizar seu tempo e melhorar o tempo de escrita da sua aplicação.

A grande maioria dos usuários de Ruby usam o Rails e a grande maioria dos usuários Rails usam apenas o ActiveRecord, que atende, mas com controvérsias. Quero nessa palestra apresentar novas possibilidades para melhorar a performance dos seus projetos.

Débora Fernandes

July 21, 2018
Tweet

Other Decks in Programming

Transcript

  1. “Uso as Ac i R co em h ap ções”

    “ Tiv b e s fe es p de de v er, qu ar p o l em d ção po n ta / es v em la r s?
  2. First things first! Sua APP pode manter os dois ORM’s

    simultâneos não se preocupe em escolher
  3. Sequel LOAD TIME: 0.08 CORE PEQUENO & PLUGINS 0 ISSUES

    NO GITHUB LOAD TIME: 0.4 (5x mais lento) GEM MONOLÍTICA 130 ISSUES NO GITHUB (com a label activerecord) ActiveRecord
  4. Dataset DB[:events].all [ {:id=>1, :name=>"TDC"}, {:id=>2, :name=>"Rubyconf"} ] _____ Grande

    parte da flexibilidade do Sequel vem do uso de datasets Query SQL como Objeto
  5. Add ao Gemfile ou gem install ‘sequel-rails’ application.rb: config.sequel.after_connect =

    proc do Sequel::Model.plugin :timestamps, update_on_create: true Sequel::Model.plugin :update_or_create Sequel::Model.plugin :validation_helpers Sequel::Model.plugin :tactical_eager_loading end
  6. class State > ActiveRecord::Base has_many :cities end > states =

    State.where(id: [1,2,3,4,5]) > states.each { |state| state.cities} N+1
  7. class State > ActiveRecord::Base has_many :cities end > states =

    State.where(id: [1,2,3,4,5]).includes(:cities) > states.each { |state| state.cities} N+1
  8. class DB::State > Sequel::Model one_to_many :cities end > states =

    DB::State.where(id: [1,2,3,4,5]) > states.each { |state| state.cities} N+1
  9. class DB::State > Sequel::Model one_to_many :cities end > states =

    DB::State.where(id: [1,2,3,4,5]).eager(:cities) > states.each { |state| state.cities} N+1
  10. A DOC é simples e BEM completa Isso foi só

    um começo, tem muito poder nessa GEM