Asset Pipeline for Dummies

Asset Pipeline for Dummies

Delve deep into the Rails asset pipeline.. well, let's just figure it out together!

0e2948f19a7dacdf4085d7d33093f260?s=128

Eric Berry

April 24, 2012
Tweet

Transcript

  1. Asset Pipeline for dummies

  2. Why?

  3. Precompile

  4. Concatenate

  5. Minify

  6. Sprockets performs the asset packaging which takes the assets from

    all the specified paths, compiles them together and places them in the target path (public/assets).
  7. Tilt is the template engine that Sprockets uses. This allows

    file types like scss and erb to be used in the asset pipeline.
  8. None
  9. Asset Pipeline Files in Asset Paths

  10. Asset Paths

  11. None
  12. None
  13. app/assets is for assets that are owned by the application,

    such as custom images, JavaScript files or stylesheets.
  14. app/assets is for assets that are owned by the application,

    such as custom images, JavaScript files or stylesheets. lib/assets is for your own libraries’ code that doesn’t really fit into the scope of the application or those libraries which are shared across applications.
  15. app/assets is for assets that are owned by the application,

    such as custom images, JavaScript files or stylesheets. lib/assets is for your own libraries’ code that doesn’t really fit into the scope of the application or those libraries which are shared across applications. vendor/assets is for assets that are owned by outside entities, such as code for JavaScript plugins and CSS frameworks.
  16. the manifest

  17. None
  18. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once.
  19. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required.
  20. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required. • require_directory [path] requires all source files of the same format in the directory specified by path. Files are required in alphabetical order.
  21. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required. • require_directory [path] requires all source files of the same format in the directory specified by path. Files are required in alphabetical order. • require_tree [path] works like require_directory, but operates recursively to require all files in all subdirectories of the directory specified by path.
  22. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required. • require_directory [path] requires all source files of the same format in the directory specified by path. Files are required in alphabetical order. • require_tree [path] works like require_directory, but operates recursively to require all files in all subdirectories of the directory specified by path. • require_self tells Sprockets to insert the body of the current source file before any subsequent require or include directives.
  23. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required. • require_directory [path] requires all source files of the same format in the directory specified by path. Files are required in alphabetical order. • require_tree [path] works like require_directory, but operates recursively to require all files in all subdirectories of the directory specified by path. • require_self tells Sprockets to insert the body of the current source file before any subsequent require or include directives. • depend_on [path] declares a dependency on the given path without including it in the bundle. This is useful when you need to expire an asset’s cache in response to a change in another file.
  24. • require [path] inserts the contents of the asset source

    file specified by path. If the file is required multiple times, it will appear in the bundle only once. • include [path] works like require, but inserts the contents of the specified source file even if it has already been included or required. • require_directory [path] requires all source files of the same format in the directory specified by path. Files are required in alphabetical order. • require_tree [path] works like require_directory, but operates recursively to require all files in all subdirectories of the directory specified by path. • require_self tells Sprockets to insert the body of the current source file before any subsequent require or include directives. • depend_on [path] declares a dependency on the given path without including it in the bundle. This is useful when you need to expire an asset’s cache in response to a change in another file. • stub [path] allows dependency to be excluded from the asset bundle. The path must be a valid asset and may or may not already be part of the bundle. Once stubbed, it is blacklisted and can’t be brought back by any other require.
  25. usage

  26. None
  27. Misconceptions

  28. Files must belong in their respective paths. For example, all

    JavaScript files must be in a javascripts folder within an asset path.
  29. Files must belong in their respective paths. For example, all

    JavaScript files must be in a javascripts folder within an asset path. The truth is that the paths (stylesheets, javascripts, images) are only there for organization. You can have all the assets in a single folder or in a hundred.
  30. Sass files need to use *erb* extension to allow for

    asset path inclusions within the files.
  31. Sass files need to use *erb* extension to allow for

    asset path inclusions within the files. The truth is that sass-rails provides -url and -path helpers for the following asset types: image, font, video, audio, JavaScript and stylesheet.
  32. gems

  33. faq

  34. Why doesn't the auto-generated scss and coffeescript only get included

    in their respective controller views?
  35. Why doesn't the auto-generated scss and coffeescript only get included

    in their respective controller views?
  36. Do I have to use the asset pipeline?

  37. Do I have to use the asset pipeline?

  38. What happens if there are duplicate file names in different

    asset folders?
  39. What happens if there are duplicate file names in different

    asset folders?
  40. How can I precompile assets that aren't to be used

    in the pipeline?
  41. How can I precompile assets that aren't to be used

    in the pipeline?
  42. How can I precompile additional assets without having to include

    them in the manifest?
  43. How can I precompile additional assets without having to include

    them in the manifest?
  44. Precompile Concatenate Minify

  45. None
  46. http://coderberry.me