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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
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]