Practical Ruby Gems
TimHunter writes "I was skeptical when I first saw the title of David Berube's new book, Practical Ruby Gems, from Apress. Do Ruby programmers really need a book devoted entirely to add-on libraries? Most Ruby programmers already know about the RubyGems package management system, and most already have their set of favorite gems. About a third of the way through the book I grudgingly admitted that Rubyists might be able to use this book. After all, even long-time Ruby programmers are unlikely to know about all the gems covered in this book. So then I had a new question. Would I find something in this book that made me say 'I didn't know you can do that with Ruby!'" Read on for the rest of Tim's review.
Practical Ruby Gems
author
David Berube
pages
271
publisher
Apress
rating
8
reviewer
Tim Hunter
ISBN
1-59059-811-3
summary
A survey of useful and interesting Ruby libraries
Ruby is an object-oriented programming language in the same family as Perl and Python. The programming language used by Ruby on Rails, Ruby is very popular for writing web applications but also widely used for general-purpose programming tasks. Ruby is open source with a commercially friendly license, and is available for Linux, Mac OS X, and Microsoft Windows. RubyGems is Ruby's system for managing, delivering, and installing third-party libraries and applications. It is similar to Perl's CPAN or the Python Package Manager.
Libraries distributed by RubyGems are called "gems." RubyForge is the central Ruby software repository and the primary distributor of gems. According to sysadmin Tom Copeland, RubyForge currently hosts about 1400 different gems. Of that number, Berube selected 29 useful and interesting libraries for his survey of "practical" gems. All of the gems described in this book work the same on Linux, OS X, and Windows.
Practical Ruby Gems is divided into three parts. Part 1 describes the RubyGems system itself. This part explains how to install the RubyGems software and then use RubyGems to install and manage individual gems. (RubyGems is not part of Ruby's standard distribution, except in the "one-click installer" for Microsoft Windows.) The section entitled "What is require_gem?" in Chapter 3 demonstrates one of the problems with writing technical documentation for a moving target like RubyGems. Practical Ruby Gems describes RubyGems 0.9.0. After the book went to press the RubyGems team released a new version that replaced the 'require_gem' method with a method called simply 'gem'. Currently all uses of 'require_gem' generate a warning message. (The remedy for this mistake is simple: attach a yellow sticky with the words "s/require_gem/gem/g" to page 20.) This is really a nitpick, though. Generally the text and examples in the book work as well for the new release as they did for 0.9.0.
Part 2 is by far the largest and has a chapter devoted to each of the 29 gems. The chapters in this part share a common structure. After a short introduction to the gem, there is a section entitled "How Does It Work?" which explains the purpose of the gem and how it's used. Frequently this section includes a small example. "How Does It Work?" is followed by a complete example script. Then, "Dissecting the Example" steps through each part of the example, explaining how it works and pointing out important classes and methods. The examples frequently combine two or more gems, such as the example for pdf-writer, which also uses the net-sftp gem, and the example for the mongrel web server gem, which also uses the Camping web micro-framework gem.
The examples — always practical, frequently interesting, at least to a geek like me — are the heart of the book. Berube said that "no one wants to pay to read a chapter that regurgitates [the gem's built-in documentation]....I wanted to write a book that you could take the examples and actually be interested in what they accomplished." For instance, Chapter 6 describes the BlueCloth text-to-HTML conversion gem. The example in this chapter is a script that converts lightly marked-up text to PDF by combining BlueCloth with html2ps and ghostscript. Chapter 12 describes the yahoofinance gem, a library for retrieving stock quotes using the Yahoo! Finance API. The example for this library combines yahoofinance with the fxruby GUI library to produce a rudimentary stock ticker in less than 100 lines of code. (The source code for all of the examples in the book can be downloaded from the Apress web site.)
But not every example is perfect. Several of the examples rely on MySQL, which I found a chore to install. I wish Berube had chosen a simpler data base for these examples. I never did get the Camping example to run successfully. I suspect the problem was caused by some change to a gem introduced after the book went to press.
In Chapter 22 I got my "you can do that with Ruby?" moment. This chapter explains runt, a Ruby library for creating "temporal expressions," objects that describe dates that reoccur, such as "every Thursday" or "the last Thursday of every month." The example combines runt with linguistics, a small gem that extends some of the Ruby core classes with methods that support such things as pluralization and conversion from numbers to words. The result is a program that lists a set of dates expressed as "the 3rd Mondays of 2026." I was impressed by both gems, not only for the functionality they provide but by their natural and elegant interfaces as expressed in the example script. I not only learned about two very practical Ruby gems, but something about Ruby programming itself. This particular example may not strike everybody the way it did me, but I believe that most readers will find an equally pleasant surprise.
Part 3 is a tiny, advanced topics section which describes how to create and distribute your own Ruby gems and how to run a private gem server on a local network.
Practical Ruby Gems is not for the novice. Berube assumes that his reader is familiar with programming in general and Ruby specifically, and is also familiar with the operating system in which Ruby is running. This is an appropriate assumption because Practical Ruby Gems will be most useful to readers who are serious about programming Ruby, such as professionals or serious amateurs, or those would like to become professionals or serious amateurs.
Practical Ruby Gems is available in PDF format from the Apress web site at about half the price of the paper book.
I have been programming Ruby as a hobby for over 5 years. I am the maintainer of RMagick, one of the gems reviewed in this book. Apress gave me a review copy of Practical Ruby Gems, but otherwise I have no connection to the author or publisher.
You can purchase Practical Ruby Gems from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Libraries distributed by RubyGems are called "gems." RubyForge is the central Ruby software repository and the primary distributor of gems. According to sysadmin Tom Copeland, RubyForge currently hosts about 1400 different gems. Of that number, Berube selected 29 useful and interesting libraries for his survey of "practical" gems. All of the gems described in this book work the same on Linux, OS X, and Windows.
Practical Ruby Gems is divided into three parts. Part 1 describes the RubyGems system itself. This part explains how to install the RubyGems software and then use RubyGems to install and manage individual gems. (RubyGems is not part of Ruby's standard distribution, except in the "one-click installer" for Microsoft Windows.) The section entitled "What is require_gem?" in Chapter 3 demonstrates one of the problems with writing technical documentation for a moving target like RubyGems. Practical Ruby Gems describes RubyGems 0.9.0. After the book went to press the RubyGems team released a new version that replaced the 'require_gem' method with a method called simply 'gem'. Currently all uses of 'require_gem' generate a warning message. (The remedy for this mistake is simple: attach a yellow sticky with the words "s/require_gem/gem/g" to page 20.) This is really a nitpick, though. Generally the text and examples in the book work as well for the new release as they did for 0.9.0.
Part 2 is by far the largest and has a chapter devoted to each of the 29 gems. The chapters in this part share a common structure. After a short introduction to the gem, there is a section entitled "How Does It Work?" which explains the purpose of the gem and how it's used. Frequently this section includes a small example. "How Does It Work?" is followed by a complete example script. Then, "Dissecting the Example" steps through each part of the example, explaining how it works and pointing out important classes and methods. The examples frequently combine two or more gems, such as the example for pdf-writer, which also uses the net-sftp gem, and the example for the mongrel web server gem, which also uses the Camping web micro-framework gem.
The examples — always practical, frequently interesting, at least to a geek like me — are the heart of the book. Berube said that "no one wants to pay to read a chapter that regurgitates [the gem's built-in documentation]....I wanted to write a book that you could take the examples and actually be interested in what they accomplished." For instance, Chapter 6 describes the BlueCloth text-to-HTML conversion gem. The example in this chapter is a script that converts lightly marked-up text to PDF by combining BlueCloth with html2ps and ghostscript. Chapter 12 describes the yahoofinance gem, a library for retrieving stock quotes using the Yahoo! Finance API. The example for this library combines yahoofinance with the fxruby GUI library to produce a rudimentary stock ticker in less than 100 lines of code. (The source code for all of the examples in the book can be downloaded from the Apress web site.)
But not every example is perfect. Several of the examples rely on MySQL, which I found a chore to install. I wish Berube had chosen a simpler data base for these examples. I never did get the Camping example to run successfully. I suspect the problem was caused by some change to a gem introduced after the book went to press.
In Chapter 22 I got my "you can do that with Ruby?" moment. This chapter explains runt, a Ruby library for creating "temporal expressions," objects that describe dates that reoccur, such as "every Thursday" or "the last Thursday of every month." The example combines runt with linguistics, a small gem that extends some of the Ruby core classes with methods that support such things as pluralization and conversion from numbers to words. The result is a program that lists a set of dates expressed as "the 3rd Mondays of 2026." I was impressed by both gems, not only for the functionality they provide but by their natural and elegant interfaces as expressed in the example script. I not only learned about two very practical Ruby gems, but something about Ruby programming itself. This particular example may not strike everybody the way it did me, but I believe that most readers will find an equally pleasant surprise.
Part 3 is a tiny, advanced topics section which describes how to create and distribute your own Ruby gems and how to run a private gem server on a local network.
Practical Ruby Gems is not for the novice. Berube assumes that his reader is familiar with programming in general and Ruby specifically, and is also familiar with the operating system in which Ruby is running. This is an appropriate assumption because Practical Ruby Gems will be most useful to readers who are serious about programming Ruby, such as professionals or serious amateurs, or those would like to become professionals or serious amateurs.
Practical Ruby Gems is available in PDF format from the Apress web site at about half the price of the paper book.
I have been programming Ruby as a hobby for over 5 years. I am the maintainer of RMagick, one of the gems reviewed in this book. Apress gave me a review copy of Practical Ruby Gems, but otherwise I have no connection to the author or publisher.
You can purchase Practical Ruby Gems from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Does anyone here remember books like O'Reilly's "The Whole Internet" (http://www.oreilly.com/catalog/twi2/index.html)?
With things like blogs and wikis are dead tree versions of these sorts of catalogs really useful or relevant any more?
The debates here on slashdot rage on about global warming and being "environmentally friendly"... yet how can anyone support a book like this when it could just as easily have been published as a web page?
I stopped wasting time and money on books like this ages ago. I cannot for the life of me understand why people still bother.
Installing Ruby on an Apache web server and getting it to work properly. I've seen bits and pieces all over the Ruby Forge wiki and in a ton of Google searches, but nothing that worked.
The simple truth is that interstellar distances will not fit into the human imagination
- Douglas Adams
Some books, while useful, are not worth the full purchase price and shelf space. I have bought several books in PDF form this year. PDFs are even better when publishers render the PDF in landscape (horizontal) format - much better for reading on a laptop.
One advantage of PDF books is that assuming a local search engine like Spotlight or Google Desktop, it is fast and easy to find relevant reference materials.
That said, I also enjoy my home office bookshelves - satisfying to take a physical book down off the shelf for reading.
Sinve the rubyonrails.com, basecamp.com and other ruby websites all run PHP on their frontend, I was wondering how to scale RUBY. Everytime you talk to RUBY people about scalability, they always point to 43things.com and that seems to be the only one; even so, they require 2-3 times the hardware to so the same job and STILL require PHP in places.
This is my sig. There are many like it but this one is mine.
With Chavez, Vladimir Putin and Fidel Castro. Save the planet!
So I used Perl because I know it can. Like it or not, as many nice features as Python does have, there's a whole lot of stuff that it _doesn't_ have. It's primitive and hardly feature-complete. Perl's been around for a while, has a great built-in library of functions, easy_install functions similar to gem. It's being used for practically everything you can imagine...websites, game scripting engines, scientific and analytical work, and there's a myriad of addon libraries , many of which can easily be installed under Windows, Linux and essentially any other platform that Perl can run on (e.g. cell phones). Can you say that for Python? Maybe in a few years, by which time Perl will likely have surpassed it yet again. Hell, Python was a language born and designed in the Netherlands, and it _still_ has trouble with internationalization support.
I'm sure the "cultist" Python fans will moderate this into oblivion, and personally, that's exactly what I'm hoping for. What better way to demonstrate the rabid, uncontrolled fanboyism toward a half-assed language?
Nothing for 6-digit uids?
Nice flamebait. Enjoy your perl, grampa.
If you're going to just drop a canned troll, at least put in the effort of a find/replace (or regexp) to make sure that the thing you're trolling against is actually the topic of the article/discussion.
We all know what to do, but we don't know how to get re-elected once we have done it
As someone who just bought a paper copy of the Unicode 5 standard, with annexes and code charts and all, weight 10lb or so, even though it's all downloadable for free, I am really getting a kick out of these replies.
So why did I buy it? Why not read the PDFs that are thoughtfully provided free by the Unicode Consortium?
1 -- I can flip through a book in front of the TV. Not so a PDF. Yes, I have a tablet PC.
2 -- As a book, the size of the different sections is much more real to me. I know this sounds wierd but with the book I can have insights like 'boy, the addition of Cuneiform bulked out Plane 0 by *this much* that I wouldn't have with PDFs. It helps with situational awareness, I guess.
3 -- When I want to show it to someone, I go "Hey, look at this bit here in annex 15!" And they look. If I go "Hey, when we get near some wireless access, go to this site and click 'annexes' and then number 15 and it's section 13.7 near the bottom!" they ain't gonna look.
4 -- Same applies when the 'someone' is me.
5 -- I see the book, with its myriad post-it notes and bookmarks and marginalia and apprehend it as a whole. This does not happen with a website. With a website I don't even know if I've read it all.
6 -- etc etc etc ad nauseam.
Now I don't even like Ruby -- I was a big Ruby fan back in about 1998 and like many other first-generation Ruby fans I learned a harsh lesson about what happens when the whole project is dictated by one xenophobic Japanese guy. Plus as you can deduce from the above I kind of need multilingualization! But if I were still into Ruby this is just what I'd want -- a book I can just pick up off the table in front of the TV, and get an idea, and show the page to someone else, maybe even cite it later. Not a website that changes and that I have to have a computer to read and that requires instructions like 'go to this URL, click on this'. A book! That's why we have them!
It's what's for breakfast!
Whence? Hence. Whither? Thither.
2 points awarded out of 10. Poor effort.
python != ruby
"So I used Perl because I know it can. Like it or not, as many nice features as Python does have, there's a whole lot of stuff that it _doesn't_ have."
Can you list a few things?
Can you say that for Python? Maybe in a few years, by which time Perl will likely have surpassed it yet again.
So then you have an ETA (Estimated Time of Arrival) for Perl 6? What is the date?
I'm sure the "cultist" Python fans will moderate this into oblivion, and personally, that's exactly what I'm hoping for. What better way to demonstrate the rabid, uncontrolled fanboyism toward a half-assed language?
If Perl / Python does what you need; then great. People are free to choose their language; pick the best tool for the job at hand. Flaming without providing valid points screams of troll.
"Several of the examples rely on MySQL, which I found a chore to install." For anyone out there who'd like to have MySQL, PHP, and javascript support in Apache should check out Apache Friends (http://www.apachefriends.org/en/index.html) Their xampp project, available for Windows, Linux, sparc, etc. Is easy to install, and once you've done it, it's all ready to use. Full MySQL and PHP support. I also installed their Perl addon, and so far it's all worked flawlessly.
Look, I've never been a troll but I still hate to see it done this badly. At least s/python/ruby/g or something.
I have this image of the poster just being beaten up for his lunch money again and again until finally he can take no more and he takes ACTION! He dials up SLASHDOT! He pastes his TROLL POST in! He ain't quite sure what all the words in it mean, but hey, it's a bona fide TROLL! That'll show them! Then as he turns to leave the sixth graders beat him up again.
It's pathetic. But trolls are supposed to be inflammatory, inciteful, disturbing, even thought-provoking -- not pathetic.
Whence? Hence. Whither? Thither.
I am sorry, but your post reads like FUD. Neither language is greater than the other. Each has its strengths and weaknesses. Please describe the part where Python is lacking? What can you do in perl that you can not in python? I love and use both languages on a daily basis. I know their strengths and weaknesses. While there are many tasks for which I feel perl is better, I know of none that can not also be done in python. both groups are going through major redesigns (Perl6 Python3000) and both will excel in solving the types of problems they are good at. You mention internationalization. Python has full unicode support, and yes there are some issues which older libraries. Perl has these same problems. As for perl surpassing python, I find this an odd statement. Each language has its strengths. Do you see perl surpassing haskell? Do you expect erlang to surpass perl? what does it mean to surpass? As for your question: YES python is in all those places you mentioned, and more. ITA software (the banner add currently), Google, YouTube, Yahoo, Red Hat (python2.3 required to boot the OS!), NASA, VMWare (currently hiring python developers and uses python extensively), Sony Online Entertainment, Dreamworks, ILM, PyGame, EVE Online, Never Winter Nights, S5 (Symbian OS w/python native and most apps written in python). Did you know there is a Scientific conference SciPy dedicated to scientific computing in python with a larger attendance that the PHP conference? Did you know that python has over 500K cross platform add on libraries? Did you know that while the kernel for the OLPC XO laptop is a micro kernel based on Fedora, the OS layer including the file system and all applications is written in python? obviously not. As for web sites, there are more based on python than on perl. all the old perl sites migrated to PHP years ago, and PHP is not perl. Boston.com, oxfam, youtube, parts of Yahoo, not to mention all the Plone, Zope, Django, and TurboGears sites out there. Ruby has one web framework, python has 4 core frameworks. Perl has none unless you count PHP, which as I stated, is not perl. Seriously, where is python missing something that perl has? What problem is perl being used for that python is not? This is a serious question, and as a member of both the Perl organization and the Python Software Foundation I am curious to know your answer so we can work on it.
Yes, I often find myself exclaiming that when thinking about general purpose programming languages.
Hey folks, just because someone hasn't written it for you doesn't mean the language is incapable of a task. Is Ruby now entirely newbies or what? (Judging by some of the pablum on the Rails list, I'm guessing the answer might be yes).
I can see a paper catalog of Ruby add-on libraries being useful, simply because the Ruby web sites are so completely littered with dead projects, projects that have never released code, and so on, not to mention rampant wheel-reinvention.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
See, the difference between my post and yours is that I'm actually right. You're hanging onto the antiquated turd called Perl, which acts as a sort of poor crazy-glue that holds projects together. Its days of significance are long over; the majority of work opportunities for Perl programmers involves maintaining systems that were written years before.
= 148064 (which for those of you who don't care to read, is an author reviewing Python as used on a Nokia cellphone).
o nalization
Being that you're obviously uneducated and malicious, I'll do my best to try and inform others and embarrass you at the same time:
1) Your claim is that Python is a primitive and feature-incomplete language, which is -true- of Ruby. Perl might be feature-complete if 6 ever comes out...keep holding the faith, eh? I'm guessing we'll be replacing the Linux kernel with HURD before that happens. Great OOP and functional programming features, libraries for everything from advanced math functions to graphics display (many of which are included in the standard library, as opposed to having to pull it down from CPAN).
2) easy_install doesn't come with Perl. That's certainly true, it's a python program. Perl has CPAN, which pretty much does the same thing. Not so much of a lie as pointing out the obviousness of your canned troll.
3) Yes, many of the points that I made about Python can also be made about Perl. But some of them can't, and that's where your argument falls apart again. Example: Turbogears (www.turbogears.org), a project similar to Rails that brings together a number of mature, web-development related projects together as one product. Cell phones that are capable of running Python are technically capable of executing a web-server on said cell phone if they wished.
Can the same be said for perl? Maybe. Search for "perl embedded cell phone" on Google. You'll get a few million results, but none of them will be a cell phone that runs perl as an embedded language. What do you get when you do a similar search for python as a first result? http://www.artima.com/weblogs/viewpost.jsp?thread
4) The statement that Python has difficulty with internationalization support is patently false, anyone who cares to point their browsers at www.python.net may verify that for themselves. This is the process involved in creating a unicode string in python:
unicode_string = u"Test."
What does the Ruby on Rails wiki have to say about internationalization support (which is fully offered in Turbogears by the way)?
http://wiki.rubyonrails.org/rails/pages/Internati
First paragraph of the page: "Rails currently doesn't offer any explicit support for internalization."
Well, there you have it. You're obviously wrong, you obviously attempted a canned troll, and you obviously failed. Not that I expected a great deal from a pale and overweight man who lives a secret life from his three children trolling on Slashdot. If you can really call that a life. I wonder what they'd all think of you if they knew you were acting like an angry pre-teen online? Think they would still respect their father with that knowledge? Do they even respect you now?
You're a sad, sad excuse for a man, and I pity your children for having to acknowledge being related to you.
"Ruby has one web framework"
Wha? There's Rails, Nitro, Iowa, and a bunch of smaller ones like Merb and.. meh, I forget the names. Just because we've been taken over by <troll>kiddies who love one in particular and barely even notice the rest of the community</troll> doesn't mean that's all there is.
Perl has quite a few frameworks too, I'm sure. PHP clearly isn't one, since it's nothing to do with Perl, aside from some ancient history when it wasn't even called PHP. PHP's a language, not a framework, not even to itself. If you do count PHP as a framework, the list of ones Ruby and Perl have just went up by an order of magnitude.
"Although it may take a bit more ingenuity, many feel that the substantial productivity boost is worth it."
If it takes more ingenuity to get it to work/scale, just how are you getting any substantial productivity boost?
See, the difference between my post and yours is that I'm actually right. I suppose that's what's bothered you into turning my post into a canned troll, you're a fanboy and you felt personally insulted. I'm glad. I intend to insult you further, in fact. Only because you've made it so easy for me.
= 148064 (which for those of you who don't care to read, is an author reviewing Python as used on a Nokia cellphone).
o nalization
Being that you're obviously uneducated and malicious, I'll do my best to try and inform others, as I doubt you have the cognitive capacity to make sense of factual information:
1) Your claim is that Python is a primitive and feature-incomplete language, which is -true- of Ruby. Perl might be feature-complete if 6 ever comes out...keep holding the faith, eh? I'm guessing we'll be replacing the Linux kernel with HURD before that happens. Great OOP and functional programming features, libraries for everything from advanced math functions to graphics display (many of which are included in the standard library, as opposed to having to pull it down from CPAN).
2) easy_install doesn't come with Perl. That's certainly true, it's a python program. Perl has CPAN, which pretty much does the same thing. Not so much of a lie as pointing out the obviousness of your canned troll.
3) Yes, many of the points that I made about Python can also be made about Perl. But some of them can't, and that's where your argument falls apart again. Example: Turbogears (www.turbogears.org), a project similar to Rails that brings together a number of mature, web-development related projects together as one product. Cell phones that are capable of running Python are technically capable of executing a web-server on said cell phone if they wished.
Can the same be said for perl? Maybe. Search for "perl embedded cell phone" on Google. You'll get a few million results, but none of them will be a cell phone that runs perl as an embedded language. What do you get when you do a similar search for python? http://www.artima.com/weblogs/viewpost.jsp?thread
4) The statement that Python has difficulty with internationalization support is patently false, anyone who cares to point their browsers at www.python.net may verify that for themselves. This is the process involved in creating a unicode string in python:
unicode_string = u"Test."
What does the Ruby on Rails wiki have to say about internationalization support (which is fully offered in Turbogears by the way)?
http://wiki.rubyonrails.org/rails/pages/Internati
First paragraph of the page: "Rails currently doesn't offer any explicit support for internalization."
Well, there you have it. You're obviously wrong, you obviously attempted a canned troll, and you obviously failed. Not that I expected a great deal from a pale and overweight man who lives a secret life from his children trolling on Slashdot. If you can really call that a life. I wonder what they'd all think of you if they knew you were acting like an angry pre-teen online? Think they would still respect their father with that knowledge? Do they even respect you now?
I don't intend to reply to your messages any further, as it's obvious that's exactly what you want...attention. Maybe because you don't get enough of it in real life -- the frustration brings you here to troll like a little boy having a temper tantrum. Well guess what? You're not a little boy, you're a man...or at least you would be if you weren't acting like such a dipshit. Grow up.
While I'm as annoyed about the Rails crowd running around yelling "RAILS! RAILS! RAILS!" just as much as the next guy and allways have a snappy remark ready for anybody who thinks Rails invented intelligent web programming ... I have to say that you have to give the Rails team credit for introducing professional marketing strategies to OSS projects. Their site was the first OSS site that didn't look like shit from the get-go. They practically invented screencasts as a means of advertising their tool and actually did quite a good job with Rails too. It's mostly hype-driven and definitely not the best or most powerfull. There are countless other and often more mature frameworks out there. But they actually did a real neat job with convincing large slabs of the academic and java crowd that the 1995 way of doing things really is ancient and pointless by todays standards.
We suffer more in our imagination than in reality. - Seneca
"micro kernel based on Fedora"
Nice troll, you loser.
--
WHO ATE MY BREAKFAST PANTS?
Meet Alan Turing; I believe he proved something that you might be interested in learning about.
--
WHO ATE MY BREAKFAST PANTS?
He-he... :-) Yeah, you're right. Well, I meant different: objects in Python are way better than in Perl. Then exceptions comes in mind too... Well, and the source of Perl is same readable: zipped or plain-text... :-) Maybe vapourware Perl-6 will be better than current Perl, but yet I didn't see it in real action (Pugs only).
Can they install into $HOME again? The last time I checked (and it was on 0.9.4), they broke the possibility to install somewhere else than to the default /usr/lib hierarchy.
With some dark magic, you could do it with 0.9.0, but not with 0.9.4. How can a piece of popular on-the-edge software lack so much of common sense functionality?
Runt is a great library, I'm surprised it doesn't get more support. I wrote a short how-to for getting Runt up and running with Ruby on Rails: http://suttree.com/2006/08/14/runt-on-ruby-on-rail s/
Suttree, a weblog about casual games development
what does it means? dude
http://www.youtube.com/watch?v=d14511Amd08
The trick here is using Apache 2.2 + mod_proxy + Mongrel. The Mongrel book [awprofessional.com] is well worth the $15, too.
Yeah, what Tom said - everything else I've tried I've had to declare broken, and I've tried a few (and I've done good battle with all kinds of apache stuff since they forked from NCSA).
You can also implement mod_proxy in Apache to lighten the load on Mongrel. I have a brief tutorial for doing this from behind a NAT on my blog, but I still haven't figured out how to get mod_proxy to ignore a down backend and just serve the cache in that case (tips appreciated).
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
I'm surprised that the Hoe gem wasn't mentioned in the review. It's a tool that makes creating, testing, packaging, and publishing RubyGems dead simple.
n g-rubygems-with-hoe
http://nubyonrails.com/articles/tutorial-publishi
Rails is great, but only if your project doesn't butt up against Rails's limitations.
Rails decided not to be all things to all people, the way J2EE is. Rails is for new applications with one web front end communicating with one and only one database back end (I know, I know, SOAP, but that is often a bad answer for internal applications) and the database schema is brand new (and doesn't use any stored procedures).
If that is your architecture, Rails should be one of the frameworks up for consideration. If you've got a good source of Ruby developers, I say go for it. Rails will help you out immensely.
If, on the other hand, your architecture is anything other than what I just described, you will be in for a world of hurt if you try to use Rails. Rails will be getting in your way at every step of the game, and some things are simply impossible to do in Rails at all.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock