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.

Avatar for Ricardo Valeriano

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