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

Desmistificando o Asset Pipeline

Desmistificando o Asset Pipeline

O (tão controverso) Asset Pipeline foi introduzido no Rails 3.1 com o intuito de facilitar nossas vidas quando precisamos servir assets em nossos projetos. Ao tratá-los como parte fundamental de uma aplicação web, podemos melhorar a organização do nosso código front-end e dirigi-lo para um caminho mais robusto e modular.

Embora alguns desenvolvedores não gostem da forma como o Asset Pipeline funciona, ele introduz conceitos fundamentais no Rails que resolvem questões que são recorrentes em grandes projetos, como a distribuição de assets através de engines, modularização, minificação e outros.

Neste talk, veremos como tirar máximo proveito do Asset Pipeline, como ele se integra ao Rails e algumas alternativas possíveis da sua implementação atual.

Plataformatec

September 25, 2012
Tweet

More Decks by Plataformatec

Other Decks in Programming

Transcript

  1. "If a problem is very commom, we end up with

    a proliferation of choices." :FIVEB,BU[
  2. a linear sequence of specialized modules which performs a task,

    like an assembly line in a factory. pipe.line noun
  3. "We're elevating this stuff up to the same importance as

    Ruby code itself." %BWJE))BOTTPO3BDF$BS%SJWFS
  4. (FNpMF group :assets do gem 'sass-rails', '~> 3.2.3' # gem

    'therubyracer', :platforms => :ruby gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3' end
  5. <head> <title>Rs on Rails</title> <%= stylesheet_link_tag "application", media: "all" %>

    <%= javascript_include_tag "application" %> <%= csrf_meta_tags %> </head> BQQWJFXTMBZPVUTBQQMJDBUJPOIUNMFSC
  6. /* *= require_self *= require reset *= require layout *=

    require sidebar *= require navigation *= require typography *= require forms *= require colors */ BQQWJFXTMBZPVUTBQQMJDBUJPODTT
  7. /* *= require_self *= require reset *= require layout *=

    require sidebar *= require navigation *= require typography *= require forms *= require colors */ BQQWJFXTMBZPVUTBQQMJDBUJPODTT no jargão, o “manifesto”
  8. DPOpHFOWJSPONFOUTEFWFMPQNFOUSC RsOnRails::Application.configure do config.assets.compress = false config.assets.debug = true end

    RsOnRails::Application.configure do config.assets.compress = true config.assets.compile = false config.assets.digest = true end DPOpHFOWJSPONFOUTQSPEVDUJPOSC
  9. require 'sprockets' map '/assets' do environment = Sprockets::Environment.new environment.append_path 'app/assets/javascripts'

    environment.append_path 'app/assets/stylesheets' run environment end map '/' do run YourRackApp end
  10. (FNpMF group :assets do gem 'sass-rails', '~> 3.2.3' # gem

    'therubyracer', :platforms => :ruby gem 'coffee-rails', '~> 3.2.1' gem 'uglifier', '>= 1.0.3' end
  11. /* *= require common */ body { color: $base-font-color; }

    BQQBTTFUTTUZMFTIFFUTBQQMJDBUJPODTTTDTT $base-font-color: #555555; BQQBTTFUTTUZMFTIFFUTDPNNPODTTTDTT
  12. class TimestampProcessor < Sprockets::Processor def evaluate(context, locals) current_timestamp = DateTime.now.to_s(:timestamp)

    ["/* #{current_timestamp} */", data].join("\n") end end MJCQSPDFTTPSTUJNFTUBNQ@QSPDFTTPSSC
  13. var Showdest = { description: "Are you showdest, my friend?"

    } alert(Showdest.description); //= require_self //= require showdest BQQBTTFUTKBWBTDSJQUTTIPXEFTUKT BQQBTTFUTKBWBTDSJQUTBQQMJDBUJPOKT
  14. $ bundle gem showdest $ cd showdest $ mkdir -p

    vendor/assets/javascript $ mv ~/code/rs-on-rails/app/assets/javascripts/showdest.js \ vendor/assets/javascript
  15. module Showdest class Engine < Rails::Engine end end TIPXEFTUMJCTIPXEFTUFOHJOFSC Gem::Specification.new

    do |gem| gem.add_dependency "railties", ">= 3.1", "< 5.0" end TIPXEFTUTIPXEFTUHFNTQFD