Your SlideShare is downloading. ×
End to-End CoffeeScript
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

End to-End CoffeeScript


Published on

Talk at RailsConf 2011 by Trevor Burnham about running CoffeeScript code on both the front and back ends of a Rails 3.1 app.

Talk at RailsConf 2011 by Trevor Burnham about running CoffeeScript code on both the front and back ends of a Rails 3.1 app.

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. End-to-End CoffeeScript CoffeeScript
    • Presented by Trevor Burnham
    • at RailsConf/BohConf 2011
  • 2. Part I CoffeeScript!?!? CoffeeScript!?!?
  • 3. What is CoffeeScript?
  • 4. Do you have to use it?
  • 5. But seriously...
  • 6. Things I’ll cover today:
    • A brief primer on the CoffeeScript language
    • How it works with the Rails 3.1 asset pipeline
    • Running the same JS/CS code on both the client and the server
  • 7. And things I won’t:
    • The CoffeeScript language in depth (that would take a whole book... available at )
    • Sprockets 2 ( #= require foo )
    • jQuery UJS ( $.rails )
  • 8. CoffeeScript crash course
    • “ Dash rocket” instead of function
    • Semantic whitespace instead of {}
    • Implicit parentheses, implicit var scoping
  • 9. Awesome goodies for Rubyists
    • Postfix if/unless
    • Implicit return s
    • String interpolations
  • 10. Things that feel weird to Rubyists
    • Parentheses are not optional on functions with no arguments
    • It’s just JavaScript™
  • 11. Things that feel weird to JavaScripters
    • CoffeeScript’s of is JavaScript’s in
    • CoffeeScript’s in is Python’s in
    • CoffeeScript’s == is JavaScript’s ===
  • 12. Tradeoffs
    • Debugging (will get better, but currently kind of a pain)
    • Changing versions (though it’s been pretty stable for the last 5 months)
    • Less documentation (but there is a book from PragProg...)
  • 13. Even so!
    • After only a week of using CoffeeScript, I felt more productive than I ever had in JavaScript.
    • The community is awesome.
    • Learning CoffeeScript might make you think more deeply about JavaScript.
  • 14. Part II CoffeeScript in Rails 3.1 CoffeeScript in Rails 3.1
  • 15. Let’s make a Rails app!
    • rails new EndToEnd
    • cd EndToEnd
    • rails generate controller User signup
    • Clone the repo if you want to follow along... )
  • 16. JavaScripts are assets
    • New in Rails 3.1, generate controller gives us a CoffeeScript file automatically:
  • 17. Compound extensions
    • .html.erb & .html.haml -> HTML
    • .css.scss & .css.sass -> CSS
    • -> JavaScript
    • Want to use a different format? Just rename! application.js ->
  • 18. Compound extensions
    • Stylesheets and JavaScripts are automatically concatenated by Sprockets 2, even in development:
    • All the CSS and JS is loaded on every page, so it’s still up to you to isolate controller-specific functionality.
  • 19. Building a sign-up box
  • 20. Adding JS validations
  • 21. Great, but...
    • Client-side validations are just there to provide a friendlier user experience. What really matters are server-side validations.
    • Traditionally, we’d do this by using ActiveRecord, repeating much of the work we just did...
    • But there’s another way!
  • 22. Server-side JavaScript! (And CoffeeScript)
    • If you’ve got coffee-script in your Gemfile, then you’ve already got ExecJS:
    • It uses the best available JS environment on your system. Use therubyracer (or therubyracer-heroku ) for maximum portability.
  • 23. No need to rewrite the same validation code!
    • ExecJS lets us turn our CoffeeScript validation script into a Ruby object:
  • 24. A small taste of what’s to come what’s to come
    • Future plugins will make the server-side JS process smoother in Rails
    • With jsdom, you can do practically anything that you could do with client-side JS (including manipulating HTML with jQuery!)
    • Validation, templating... anything you’re duplicating can be done as end-to-end JS.
  • 25. How can you become a CoffeeScript ninja?
    • Official site, great overview:
    • Nice screencast:
    • Totally unbiased book recommendation:
  • 26. Thanks
    • Questions? [email_address]