Ruby on Rails Programming II
Learn practical, time-saving techniques used in real-world Rails apps from two acclaimed Rails experts in this 4-day training course for intermediate Rails developers.
If you've written a Rails app or two, but you're bumping into issues as you try to add more "advanced" features you've seen in real-world apps, then this is the next course for you! If you suspect there may be better, more efficient ways of doing things in general, you'll learn our best practices for designing and developing Rails apps. Over the course of 4 days, we'll address a variety of questions including:
- Are you designing your application properly?
- Could your testing be easier and more effective?
- Are you using the right libraries to make your coding easier?
- Could you tie together multiple apps without writing a bunch of code?
- Have you considered all the security vectors?
- Will your application perform and scale well enough?
By attending this course, you'll move beyond the skills of the average Rails developer and return to your project with pragmatic ways to immediately improve your existing Rails apps. It's four day's worth of insights and discussions you can't get anywhere else!
- Take your skills (and your apps) to the next level by learning from the real-world experience of two renowned experts.
- Gain a deeper understanding of the very latest versions of Ruby and Rails so you can use them with more confidence and efficiency.
- Learn the techniques, tools, and tips we use to design and develop industrial-strength Rails apps.
“Thank you for the brilliant Rails II course. I learned more in a week than I would have in a year spent alone in my office!”
What Will I Learn?
Best practices for designing and developing sophisticated Rails apps. Through a series of guided instruction, hands-on exercises, and discussion, you'll learn best practices for solving real-world problems. Topics include:
Model Design Best Practices
You want to design your models "the right way", and yet there are many ways that would work: inheritance, through associations, polymorphic associations, and so on. How do you decide which design is better? We'll look at all the options and discuss when they might be appropriate.
Rails tries hard to encourage you to test your app by giving you some basic tools out of the box. But you're left to answer many questions on your own. How do you structure your test code? When do you write a unit, functional, or integration test? Which additional tools should you use? How do you effectively test full-featured web apps? We'll show you what works best for us.
Ajax Interactions with jQuery
What's New in Ruby 1.9
Ruby is a-changin'. Rails is now fully supported on Ruby 1.9.2, and many projects are now transitioning to Ruby 1.9 in production for its performance and new language features. As a Rails programmer, you'll want to stay on top of all the new syntax and features. You'll learn how to make your code more powerful, compact, and fun to work with!
The Ruby Object Model
Ruby is different than the languages you're used to. If you're still using the design techniques that work with those languages, you're not exploiting the power of Ruby, and you're writing more code than you need. Understand the underlying model, and everything falls into place. Dave has been digging into that model for the last ten years, and has a fresh way of looking at it. By truly understanding the Ruby object model, you'll be a better Rails (and Ruby) programmer.
Metaprogramming lets you program more expressively. It makes your code easier to write and easier to maintain and extend. Rails itself uses the metaprogramming features of Ruby to deliver more features with less code. You'll learn how to apply Ruby metaprogramming techniques to extend Rails (and your Rails apps) to your advantage.
It's easy to overlook potential security issues, especially when Rails handles some security concerns for you. But it's critical that you adopt good security practices up front to defend your application, and regularly review your code with security in mind. We'll walk you through our checklist for reviewing security vulnerabilities including SQL injection attacks, cross-site scripting, unauthorized/malicious use, and production server considerations.
You can get by with basic single-model forms, but often you'll want to design more sophisticated multi-model forms for a better user experience. Rails 3 has added better support for multi-model forms, and we'll teach you how to design forms that take advantage of the latest techniques.
Performance and Scalability
Does Rails scale? Of course it does. Does your application scale? That's the more important question, and the answer is up to you. On the tactical front, you'll learn how to optimize your use of ActiveRelation and effectively use the caching that's built into Rails 3. On the strategic front, you'll learn how to identify potential performance and scalability problems and address them appropriately.
Designing REST APIs
As your application matures, you may want to create an API for external, non-browser clients to read and write application data. Or perhaps you'll want an API to interlink multiple apps without writing a bunch of code. You'll learn how to design such an API that uses the REST conventions, including authentication.
It's common for web applications to do some work in the background, outside of the request-response cycle. Several libraries aim to simplify the mechanics of this, but how you use them is largely a design decision. We'll explore the tools and techniques for handling long-running tasks or scheduling background jobs in a Rails app.
Practical tips, tricks, and techniques
Along the way you'll learn practical tips, tricks, and techniques used by the pros to work more efficiently and build real-world Rails applications.
But that's just the plan. The reality is that the content will likely change each time we teach this course. The state of the art continues to evolve, and solutions that are common today may no longer be the best tomorrow. We'll keep you up to date.
Who Should Attend?
Intermediate Rails Developers. This course picks up where our introductory Ruby on Rails course leaves off. Ideally you will have gained experience developing a basic Rails application between these courses.
This course will be a good fit for you if...
- You have project-level experience with fundamental Rails concepts.
- You're comfortable with object-oriented programming in the Ruby language.
- You've attended our introductory Ruby on Rails course (not required).
- And anyone who wants to take their skills to the next level!
Food, Code, and More. Here's what's included with your registration:
- A continental breakfast, a hot lunch, and continuous beverages and snacks each day
- A binder with the printed course material
- All the exercises and example source code to refer back to later
- An invitation to our alumni-only mailing list for help after the Studio
- Proof of completion online as well as a signed certificate
- Internet connectivity during the Studio
- A stylish Pragmatic Studio t-shirt
- Discounts on future training
Who Teaches the Course?
Two Rails Authors and Experts. This Studio is taught by programmers for programmers. Learn directly from two authors of the premier references for Rails who have also built and deployed numerous real-world Rails applications.
Mike Clark is the owner of The Pragmatic Studio, and also an experienced Rails and iOS developer, author, and trainer. You can check out the Rails and iOS apps he's developed, and his blog, on his personal site. As one of the original Pragmatic Studio instructors, he has taught many public and private courses. Mike is the author of Advanced Rails Recipes, a contributor to Agile Web Development with Rails, and Pragmatic Project Automation.
What Should I Bring?
Your Laptop. It wouldn't be a hands-on course if you didn't walk away having written some code. You'll be most productive on the laptop you use regularly. (On average, 60% of attendees bring Mac OS X, 30% bring Windows, and 10% bring Linux.)
A few weeks before the course, we'll send out detailed instructions for installing everything you'll need. During the course, you'll get hands-on experience working through prepared exercises, and experimenting on your own, too.
What's a Studio?
Comprehensive, Hands-On Learning. The Studio experience doesn't begin and end in the classroom. The moment you register, we'll help you start preparing for the course. In the Studio you'll enjoy a distraction-free, interactive learning environment. When you return to your project, you'll have access to supporting resources to help you succeed. (Why we call them Studios.)
1. Help You Prepare: Before you arrive, you'll:
- Receive prep material to help you get the most out of our time together
- Get detailed laptop set-up instructions
2. In the Studio: In our collaborative learning environment you'll:
- Learn through guided instruction and hands-on programming exercises
- Discover new techniques in live coding sessions
- Get your questions answered by experts and your peers
- Reinforce the concepts you've learned in books, and dig deeper
- Discuss timely topics, tips, and tricks
3. On-Going Support: After you return to your project, you can:
- Get your questions answered on our alumni-only mailing list
- Get discounts on books, screencasts, and future training to continue learning
4. Success: Deliver your app with more confidence!
- Show off your app in our alumni gallery.
- Connect with fellow alumni in our Yearbook.
“Certainly one of the best training experiences I've ever had...The materials are good, the guys are experts and the entire thing was fun—which is hard to say about any training program.”