Rails Cookbook
honestpuck writes "When reading the foreword of Rails Cookbook I felt a strong kinship with Zed Shaw, I too have fond memories of the first edition of Perl Cookbook and the way I relied on it once I'd taken the training wheels off. Since that one I have relied on several of the O'Reilly Cookbook series. It is only when I discard the early tutorial and dive in the deep end with a "cookbook" on my desk that I really start to learn proficiency." Read the rest of honestpuck's review.
Rails Cookbook
author
Rob Orsini
pages
514
publisher
O'Reilly
rating
7
reviewer
honestpuck
ISBN
0596527314
summary
for programmers who know something about web development but are early in their use of Rails,
I felt timorous and unsure when I finished Agile Web Development with Rails, a marvelous tutorial that introduced me to my first real web development framework (I must have enjoyed it, I just bought the second edition). Since I have volunteered to develop a fairly large and complex web application in Rails I awaited the arrival of my copy of Rails Cookbook with hopeful anticipation and bated breath.
Rob Orsini, his fellow contributors (15 in all) and the team at O'Reilly have once again delivered. Compared to the previous titles in the series I've owned Rails Cookbook seems to have fewer recipes but as it is tackling an entire application framework and some serious issues, some of the solutions and discussions run a lot longer. The book is targeted at programmers who know something about web development but are early in their use of Rails, though it should be helpful to all Rails developers.
The book starts with tackling issues of installation and getting development tools installed in the first two chapters. Despite already deploying a couple of simple Rails apps I found that there was the odd useful tip in these chapters. The book then covers each of the three main sections of Rails; Active Record, Action View and Action Controller. The rest of the book goes on with large chapters on testing, Javascript, debugging, performance and hosting and deployment. Along the way it also covers REST, Action Mailer, security, plug-ins and graphics.
The extremely large section on Active Record was to me the most useful. I seem to spend an inordinate percentage of my Rails coding time with Active Record and it contains a large part of Rails power so I appreciated the size of this chapter. By contrast the chapter on graphics is almost entirely unread.
It seems obvious that this book should be compared to Pragmatic's Rails Recipes. The first point of difference is that Rails Cookbook covers installation and setup. The second point is that is 'Recipes' covers Rails 1.1 while 'Cookbook' targets the brand new Rails 1.2. As a project fairly new on the scene Rails is a fast moving target so the six months between the two books makes a difference. Both books have excellent coverage of the various aspects of Rails, with a great deal of overlap. 'Recipes' has more, shorter pieces while 'Cookbook' tends towards longer pieces with more discussion. 'Cookbook' is also more general, with more recipes more likely to be useful in every Rails project you write.
The style is different between the two. Here Cookbook comes off second best, it feels as though tightly edited by a number of hands and ends up lacking personality; functional but cold compared to Recipes. The writing, however, is good. It's easily read, at times it feels like a good textbook. The layout is clean, it is easy to find the information you need from each recipe when you want.
With almost all "cookbook" style books I seem to be left feeling that a number of the recipes are just a little too obvious and covered well in beginner tutorials. There is some of this in Rails Cookbook, most notably the first two chapters, but overall the book will be useful to any beginner to intermediate Rails programmer. Personally I had a couple of moments where I read a tip and wanted to scream as it demonstrated and explained in a few short sentences and half a page of code what had taken me hours to discover for myself.
The "Cookbook" series all seem to be books worth the price and shelf space. This one is no exception. I'd give it three out of five with an extra half for its timely information on Rails 1.2 and would recommend it for all Rails programmers from the absolute beginner through to all but the most experienced. If you already have a copy of 'Recipes' and are happy with it then you might want to stick with that till either volume is updated for the next major revision of Rails, otherwise you will almost certainly appreciate a copy of Rails Cookbook.
You can purchase Rails Cookbook from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
I felt timorous and unsure when I finished Agile Web Development with Rails, a marvelous tutorial that introduced me to my first real web development framework (I must have enjoyed it, I just bought the second edition). Since I have volunteered to develop a fairly large and complex web application in Rails I awaited the arrival of my copy of Rails Cookbook with hopeful anticipation and bated breath.
Rob Orsini, his fellow contributors (15 in all) and the team at O'Reilly have once again delivered. Compared to the previous titles in the series I've owned Rails Cookbook seems to have fewer recipes but as it is tackling an entire application framework and some serious issues, some of the solutions and discussions run a lot longer. The book is targeted at programmers who know something about web development but are early in their use of Rails, though it should be helpful to all Rails developers.
The book starts with tackling issues of installation and getting development tools installed in the first two chapters. Despite already deploying a couple of simple Rails apps I found that there was the odd useful tip in these chapters. The book then covers each of the three main sections of Rails; Active Record, Action View and Action Controller. The rest of the book goes on with large chapters on testing, Javascript, debugging, performance and hosting and deployment. Along the way it also covers REST, Action Mailer, security, plug-ins and graphics.
The extremely large section on Active Record was to me the most useful. I seem to spend an inordinate percentage of my Rails coding time with Active Record and it contains a large part of Rails power so I appreciated the size of this chapter. By contrast the chapter on graphics is almost entirely unread.
It seems obvious that this book should be compared to Pragmatic's Rails Recipes. The first point of difference is that Rails Cookbook covers installation and setup. The second point is that is 'Recipes' covers Rails 1.1 while 'Cookbook' targets the brand new Rails 1.2. As a project fairly new on the scene Rails is a fast moving target so the six months between the two books makes a difference. Both books have excellent coverage of the various aspects of Rails, with a great deal of overlap. 'Recipes' has more, shorter pieces while 'Cookbook' tends towards longer pieces with more discussion. 'Cookbook' is also more general, with more recipes more likely to be useful in every Rails project you write.
The style is different between the two. Here Cookbook comes off second best, it feels as though tightly edited by a number of hands and ends up lacking personality; functional but cold compared to Recipes. The writing, however, is good. It's easily read, at times it feels like a good textbook. The layout is clean, it is easy to find the information you need from each recipe when you want.
With almost all "cookbook" style books I seem to be left feeling that a number of the recipes are just a little too obvious and covered well in beginner tutorials. There is some of this in Rails Cookbook, most notably the first two chapters, but overall the book will be useful to any beginner to intermediate Rails programmer. Personally I had a couple of moments where I read a tip and wanted to scream as it demonstrated and explained in a few short sentences and half a page of code what had taken me hours to discover for myself.
The "Cookbook" series all seem to be books worth the price and shelf space. This one is no exception. I'd give it three out of five with an extra half for its timely information on Rails 1.2 and would recommend it for all Rails programmers from the absolute beginner through to all but the most experienced. If you already have a copy of 'Recipes' and are happy with it then you might want to stick with that till either volume is updated for the next major revision of Rails, otherwise you will almost certainly appreciate a copy of Rails Cookbook.
You can purchase Rails Cookbook from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
I think this has been reviewed once or twice before on Slashdot... but I digress.
:)
I agree that this is a fantastic book, as it shows you some incredibly slick stuff you can do using Rails. But unless you already have somewhat of an understanding of Ruby then I'd strongly recommend getting a separate reference book just for Ruby by itself. O'Reilly makes one of those, too.
/* No Comment */
I bet you have never programmed a web app in your life... ASP? *laugh*
You can get it for $4 more at B&N
It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
Then you'll _never_ touch Python!
I have a co-worker who loves it and whenever I say something like, "I'm going to write a small program around a few syscalls and some low level bit twiddling in C" his response is always "Oh, you know Python can do that, right? And it'll be faster!"
It actually looks like a decent language, but he's turned me off to it (and it seems to grab a lot of the things I don't like from perl [disclaimer: I like perl] and very few of the ones that I do). I'll learn it sometime, but I definitely agree that fanboys make learning languages seem unappealing. That being said, I've played around with rails, using it to do the interface for a desktop reclamation maya renderfarm, and it is rather cool in some respects. It's a good tool to have, but it shouldn't be used for everything.
Ah, he only says that you can do it in Python... he doesn't start off by saying the C is the bane of existence, killer of babies and that it probably was the one that keyed your car.
BlackNova Traders
Hey, man, leave C++ out of this.
I've seen so many slashdot book reviews with "rails" and "cookbook" in the title, that I could swear this book has been reviewed here already.
~= scwizard =~
Make Rails Thread safe so the only option isn't to run multiple applications sucking up even more memory and I might be inclined to think it is a useful framework. WTF?! No I don't want to run a "pack of mongrels" or more than one FCGI process. Give me a break.
Rails is awesome for developers (cause it's easy) but from a system and resource POV it's atrocious. And I thought I'd never find something that I disliked as much as PHP (due to security concerns, again, don't get me wrong, it has it's place).
--Irate Systems Engineer.
I had this book for about 26 hours before I returned it, I was deeply displeased by the repetition from the existing work, Rails Recipes. All the cookbook entries about model relationships, polymorphic associations, etc, were lifted straight from Rails Recipes, right down to using Magazines, Readers and Subscriptions as the example objects.
And, while the book has a shiny "Rails 1.2" badge on the cover, very little of it had anything to do with Rails 1.2 whatsoever, there were only a handful of recipes in the very back which dealt with the new features.
Plus, was it really necessary to burn 3 pages talking about how to join a discussion group of fellow Rails developers? If you're a web developer and you can't find an online community to discuss the language/framework, you need more help than Rob's book is able to offer...
A critique of R&R. It basically says that it will not "catch on" for the same reason that Lisp and Smalltalk never did: heavy dependence on esoteric ideas and meta programming:
http://www.beust.com/weblog/archives/000382.html
Table-ized A.I.
Ruby on Rails is like the Macintosh of programming languages / web frameworks. So, the insulting comes quite naturally.
I'm a geek who uses technology in the service of the arts, but I've never been a programmer. Can anyone recommend a language in which I can learn the basics of programming, but is still powerful enough for me to do useful things? I'm comfortable with a soldering iron and piano, but the mysteries of writing code have always been outside my ken.
I don't want to become a professional, I'd just like to do know what to do when I have to write a script and make simple web apps. The only real programmers I know are hardcore types who snicker whenever I ask them this question and like to pretend that what they do is some sort of priesthood, whose secrets are not easily given up. Something tells me that they just don't want me to know how easy it is.
So I'm asking you people: I don't have the time to go back to school for a CS degree, and I'm not looking to program databases for a living, but I've got the feeling that I can manipulate documents, sound files, midi a lot easier if I knew some programming. Help a brother out here. What language would be the easiest for a novice to learn and still be able to do something worthwhile?
You are welcome on my lawn.
......... no, seriously, help this guy out. I'm not about to recommend PERL or Java or SQL, even though that's really all I'm semi-literate in. And out of those, only java might come close to the requirements. I'd like to know what you guys recommend as well
Python's definitely a good fit. It's not my favorite language in the world, but it's got sensible syntax that isn't too alien (the indent thing really won't bite you unless you have a really crappy editor or you copy and paste code). And it also has loads of libraries, good support for all major platforms (OSX support is so-so, but pyobjc is nice), and a lot of people who can help you out (#python on irc.freenode.net for example).
Here's the bad part: there's virtually no decent introductory programming texts for python or most other languages. Most of them tacitly assume you know some other language and gloss over basic things like structuring a program with control flow, functional (de)composition, and proper use of objects, or they make a hash out of trying to introduce them. To that end, I'd really recommend Structure and Interpretation of Computer Programs (aka SICP) as a learning text, but dear lord is it tedious and didactic. It's also going to teach you an abstract way of thinking that doesn't really map to python's practical structures (i.e. you're never going to use tail recursion generally, let alone an amb operator).
I really love smalltalk for playing around with programming, not so much for the language itself (it's just okay) but for the way that you don't think about "compiling" or "modules" so much as you just have objects that you fiddle around with, and your changes just happen. Unfortunately, Squeak is such a poorly-documented disastrous hodgepodge that I can't recommend it to new programmers.
So it's kind of a desert out there for decent introductory texts, but a language with good community support and mostly helpful people will be a big boost, and python does stand out.
Done with slashdot, done with nerds, getting a life.
I don't want you to think I asked the question and don't appreciate your taking the time to respond. I'm looking for some python books now. I guess I need some kind of compiler or libraries or something, so I'm going to search those out right now. Say, do I need to work in Linux to write python? I don't mind, I've got a machine around here I can use for Linux. I was waiting for the UbuntuStudio anyway, so I will have such a system soon.
You are welcome on my lawn.
python.org seems really good. They seem to be pretty helpful to beginners. So far so good. Thanks, friends.
You are welcome on my lawn.
Python works great on windows as well as any unix. I recommend unix systems in general for development, but it's mostly a matter of using what you're comfortable with. Most tutorials are going to assume you're on Linux. And I see you've already discovered where you can get the interpreter from python.org. Ubuntu comes with python, but not necessarily a full install -- you'll probably want to install python2.5 from apt anyway.
Done with slashdot, done with nerds, getting a life.
Here's a dopey question: I've got to use my Windows system for music and video production. I will set up an Ubuntu box next weekend, but I'm between projects and would like to spend some time playing with Python.
If I install Python and the Win32all library and an IDE (maybe Boaconstrictor or one of those), there won't anything that runs using resources when I'm not actually working with Python, right? I mean, there won't be any libraries or little thingies running in the background that will take resources away from my DAW or Premiere, right? I have to be pretty careful of any unneeded services or stuff running when I'm mixing audio or I'll get crackles and artifacts.
Thanks again.
You are welcome on my lawn.
C# is a nice language to begin with. Its very similar to Java, it is widely used and supported, it is easy to get started with and you even get free developer tools.
http://msdn.microsoft.com/vstudio/express/
http://www.monodevelop.com/
Visual C# 2005 Express Edition for Windows development, Visual Web Developer 2005 Express Edition for the web and MonoDevelop for Linux desktop apps.
Good luck, have fun and think in layers.
Python won't install any extra daemons or services out of the box, and no python package you install is going to do that either. The only additional resource it'll suck up is disk space.
Boa Constructor is actually pretty awful. PyDev for Eclipse is decent -- yeah, it's a Java IDE, but it's a good plugin. Now THAT will eat resources when you run it. For a lighter alternative, you can always use emacs if you can get used to its weirdness, and it has a great python mode (never thought I'd call emacs slim).
There's also SPE, though I've found it crashier than a glider in a hurricane. Still more stable than Boa. Komodo's not too bad if you want to pay for it.
Done with slashdot, done with nerds, getting a life.
Oh I tought it was about a cooking on the rails, like those things trains run on
but it is just about some programming thing
me sad
The answer is of course Ruby. You can start with Chris Pine's Learn to Program which walks you through the basics of Ruby programming, or for a more psychedelic way of learning programming there is always Why's poignant guide to ruby. Then when you get advanced enough (you've read the pickaxe and possibly the ruby way) you can start working on the bi-weekly Ruby Quiz. /ruby fanboy
Your sig(k) has been stolen. There is a puff of smoke!
;;;
;;; Return (fib n) and (fib (+ n 1))
;;;
(define (two-fibs n)
(two-fibs-aux 0 1 n))
(define (two-fibs-aux m n i)
(if (zero? i)
(values m n)
(two-fibs-aux n (+ m n) (- i 1))))
Are you adequate?
I held off learning python for almost two years for this very reason (meeting someone who was slightly too enthusiastic in their advocacy). Turns out though that it actually *is* quite a nifty language ;)
People don't make a big enough fuss about the interactive interpreter, partly because it's hard to describe why it's so useful. Try it out though, starting with diveintopython.org.
..and I'll form the head!!
Ruby or Python are probably the best places to start; they're not going to be suitable for every type of programming you do, but they might teach you some good habits before you learn other languages with horrific syntax and dangerous pointers, and you can get going very quickly.
For Ruby, there's Chris Pine's Learn to Program or Why the Lucky Stiff's Poignant Guide to Ruby which is whimsical, but does pretty much the same thing, or just go to Try Ruby and type help.
For Python there's Instant Hacking, or Useless Python and I'm sure many others. These two sites, like the Rails site, are written in PHP, but I wouldn't touch PHP with a barge-pole if you're learning just now, it's only useful for web apps and will teach you bad habits.
Idle comes bundled with the Windows installer. I use that all the time. It is pretty simple, a colourized text editor mostly, but it doesn't have the pokey feel of Eclipse. About my only complaint about Idle is that it doesn't have any line numbering down the left side of the window. Instead the line numbers are in the lower right corner in a box which makes me look away from my code. It might be just me though.
t ro/index.html
An good intro to Idle follows:
http://hkn.eecs.berkeley.edu/~dyoo/python/idle_in
Go straight to Objective C on OS X. Apple's development tools (e.g. XCode with Interface Builder, free) make it pretty easy to get started and the language is well established so you can find books, etc. More importantly, you'll be programming in an environment with first-rate multimedia support.
You'll have that sometimes...
Very good analogy, as long as you mean post OSX Macintosh. Very easy to use on the surface and produces quick results, but still has plenty of power under the hood for those who care.
I own both titles ("Rails Recipes" by Chad Fowler) and IMO neither does a great job -- there's nothing in this book not already covered by the definitive DT/DHH Agile Rails Development book. About the only redeeming value was the information on Mongrel and the detailed instructions to get Rails installed and running on all the different platforms.
Speaking of which, though, the devoting of a good chunk of paper real estate to installation, seems to be space better left for meatier topics. Especially on a topic that changes significantly on a monthly basis -- it would seem that for a book, it would be more prudent to focus on matter not so ephemeral, knowledge that would arm and equip someone learning Rails to handle any task or illustrate more advanced techniques a web developer wishes to accomplish.
AZspot
I'd like to append that perl is a good language to work for people who are heavy command line users. It was origionally designed as bash+, and it still fills that niche quite well. It's OO is truly horrid though, and for the one who was asking, I'd agree, perl is bad for him.
If by "caught on" you mean "marketing douches for go nowhere wannabe web 2.0 startups put it in their want ads" then you are right. But most people think "caught on" means a significant number of people use it for a significant number of projects. And this is simply not the case. Of myself and the 5 people I know who tried rails, I am the only still using it. And I don't really want to, I am just stuck with it for now since I got stuck with reponsability for a site which someone else made that used rails for a large app which now is having all kinds of scalability problems. Given that less than half a million people downloaded it in the first place, if my 20% use vs try rate is accurate (probably WAY high) then less than 100,000 people are using rails. That's not even approaching 1% of "caught on" languages like PHP, java and C#.
And rails scales like shit, because its poorly architected and poorly written. Making ignorant claims about it scaling "just as well" as other shared nothing frameworks/appservers is retarded. Rails has several very large scalability bottlenecks that limit its ability to scale, most unfortunate being activerecord, which needs thrown in the trash. Christ, it makes us run a few thousand ruby processes, each with its own copy of every fucking class, each using ~120MB of RAM, and each holding a database connection open all the time even though 90%+ of the time the database connection is idle and the process is running application code. We have to use an external database connection pooling app just to fix this simple, basic fuckup because rails was not designed with *any* thought put into scaling at all. Nevermind how much this sucks balls for caching data, since you are now FORCED to use external caching like memcached, you can't have a useful level 1 cache in process.