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

Rails (inclusive 4): ecossistema e marotagens.

Rails (inclusive 4): ecossistema e marotagens.

Um gostinho do que vem por aí na versão 4, e algumas coisas interessantes para despertar o interesse de quem ainda não conhece o framework.

Ricardo Valeriano

May 04, 2013
Tweet

More Decks by Ricardo Valeriano

Other Decks in Programming

Transcript

  1. Rails (4 inclusive) 10 ou mais coisas que você não

    sabia e o diabo nos detalhes Ricardo Valeriano github.com/ricardovaleriano @sr_valeriano http://speakerdeck.com/sr_valeriano
  2. Rails, ecossistema e marotagens. (inclusive da versão 4!) Ricardo Valeriano

    github.com/ricardovaleriano @sr_valeriano http://speakerdeck.com/sr_valeriano
  3. ExecJS require "execjs" atributos = ExecJS.eval "{modelo: 'fusca', marca: 'volks'}"

    # {"modelo"=>"fusca", "marca"=>"volks"} atributos.class # Hash
  4. 1º Seu código é thread safe? Sim, estou olhando para

    os seus models, controllers e tudo o mais.
  5. require 'thread_safe' sa = ThreadSafe::Array.new # supports standard Array.new forms

    sh = ThreadSafe::Hash.new # supports standard Hash.new forms
  6. require 'hamster/list' require 'hamster/stack' require 'hamster/queue' require 'hamster/hash' require 'hamster/set'

    require 'hamster/vector' simon = Hamster.hash(name: "Simon", gender: :male) # => {:name => "Simon", :gender => :male}
  7. • ActiveSupport::TestCase#pending • BufferedLogger • assert_present, assert_blank (enters: assert object.blank?

    and assert object.present?) • find_by_* (enters: bom e velho #where) • attr_accessible e attr_protected Últimos suspiros
  8. Rails 4 - controller class AnuncioController < ApplicationController end def

    anuncio_params params.require(:anuncio).permit(:modelo, :marca) end private "anuncio_params" def update anuncio = Anuncio.find params[:id] anuncio.update_attributes anuncio_params # ... redirect maroto end def create Anuncio.create anuncio_params end
  9. Dynamic Finders Anuncio.find_all_by_modelo "fusca" Anuncio.where modelo: "fusca" Anuncio.find_or_create_by_modelo "fusca" Anuncio.where(modelo:

    "fusca").first_or_create Anuncio.find_last_by_modelo "fusca" Anuncio.where(modelo: "fusca").last
  10. SELECT `anuncios`.* FROM `anuncios` WHERE (valor <= 50000) ORDER BY

    modelo DESC LIMIT 3 OFFSET 2 Anuncio. where("valor <= 50000"). order("modelo DESC"). limit(3). offset(2) ActiveRecord::Relation
  11. SELECT `anuncios`.* FROM `anuncios` WHERE (`anuncios`.`valor` <= 50000) ORDER BY

    `anuncios`.`modelo` DESC LIMIT 3 OFFSET 2 anuncios = Anuncio.arel_table #Arel::Table.new("anuncios") Anuncio. where( ). order( ). limit(3). offset(2) Arel anuncios[:valor].lteq(50000) anuncios[:modelo].desc "valor <= 50000" "modelo DESC"
  12. Resque # app/workers/image_conversion_job.rb class ImageConversionJob def work # convert some

    kind of image here end end # app/controllers/anuncios_controller.rb resque = Resque.new resque << ImageConversionJob.new
  13. # app/workers/image_conversion_worker.rb class ImageConversionWorker include Sidekiq::Worker def perform # convert

    some kind of image here end end Sidekiq # app/controllers/anuncios_controller.rb ImageConversionWorker.perform_async