Jim Weirich is introducing Ruby to XP Cincinnati next week and would like to know which ten things would be most important for Java programmers to get about Ruby. He sent out a call for suggestions on the ruby-talk list and have been gathering all the suggestions on his Ta-da list called Ten Things Every Java Programmer Should Know About Ruby.
Mike: Everybody who tries Rails raves about how it makes them super productive. What types of automation does Rails employ to help developers create great apps so quickly?
David: The basic philosophy is to encourage good behavior through invitations. So, for example, when you use the generator to create a new model or controller, it also creates unit test stubs that are all hooked up. You just enter a new test case and off you go. The same goes to fixtures, where a YAML file is already created and hooked up, just waiting for you to input the data…
We also talk about Rake and continuos integration with Damage Control. Additionally, it was great to see Mike so excited about Rails:
Rails projects are popping up all over. I just started converting a small J2EE project to Rails, and let me just say that Rails is highly addictive stuff.
This release is mostly about polishing the Rails by closing holes, deficiencies, and subtle extensions to existing features. The long-awaited Directions and generator upgrade have been postponed to the next release. The highlights of this release is:
- Rewritten reloading: Working in development with models and controllers reloading on every request now resembles “the real thing” a lot more by actually removing the model classes before reloading them. This fixes a bunch of subtle bugs and makes it possible to remove a method and see it reflected without restarting the application.
- Create and update collections: Through calls like
text_field "student", "last_name", it’s now much easier to get input tags like
input name="student[last_name]"..., which together with the fact that Base#create, Base#update, Base#destroy, Base#delete, AssociationCollection#build, and AssociationCollection#create now all accept arrays enables handling of many records at once.
- Stopping after render/redirect: Any before_filter can now terminate the chain by calling render or redirect and the pattern of redirect-and-return now works again. The first call to either render or redirect wins as well and subsequent calls are ignored.
This release shouldn’t require any changes to your application if you’re coming from Rails 0.9.4 unless you were relying on const_missing to load non-AR/AO/AC classes. In that case, you’ll have to start being explicit with require_dependency for the reloading to be triggered.
Joao Pedrosa has been using both Rails and WebWork and iterates five key points on why “…WW is clearly inferior to Rails in every aspect” before arriving at the following conclusion:
Although I think RoR is superior to all Java web framework I used so far, I really respect the WW guys for building this framework which is one of the coolest in Javaland (unfortunately still ruled by crapware like Struts) but there is absolutely NO WAY any Java framework can compete with RoR… just try to build some real life app with it to figure out yourself how much precious time you’ve been wasting until now.
Time to shutdown IDEA and launch TextMate, 2005 will definetly be the year of Ruby on Rails! :)
Daryl discovers Ruby on Rails:
Ruby on Rails is unbelievably good. It’s too good to be true almost… Quite honestly, in an afternoon I built a completely working web application without the fancy css frills and such mind you, but completely usable that would have taken me the weekend with other methods… I’m still kind of in shock as to how productive I was this weekend with RoR. And this was while learning how to program in Ruby.
Welcome to the new world, Daryl!
Zed Shaw put together a simple proof of concept application in a couple of hours to demonstrate the possibilities for rich clients in Rails and XUL. Being XUL, it naturally only works in Firefox and Mozilla, and being proof of concept, it still has plenty of stuff missing. But it does provide a window into the kind of applications Rails are capable of powering if you’re willing to limit the application to the Mozilla platform.
UPDATE: Zed has explained how the prototype works and offers a few suggestions for Rails.
On July 24th of last year, Rails 0.5 was released through RubyForge. It mustered 357 downloads in just five days. Today, fifteen releases later, we’ve pushed more than ten thousand gems and five thousand tgz/zip versions over the virtual counter. At the time of writing, the IRC channel holds 153 handles. We recently got Slashdotted and a ton of cool applications are coming out using Rails.
We’ve certainly come quite a long way in six months.
But its only going to get better. A lot better. Dave Thomas is writing the first book on Rails, the mystical 1.0 release is just 1-2 months away, and there’s a number of cool speaking engagements coming up at future conferences that’s going to push awareness even higher.
If you’re reading this, I salute you for being one of the early adopters (or at least interested) that has helped bring Rails this far. Happy half-birthday, Rails!
CD Baby is a very successful etailer of independent music. They list 82,443 artists that together have sold 1.2 million CDs! And unlike the cartels, CD Baby is all paying back to artists — $12 million has made it back into artists’ pockets.
Derek describe the reasoning behind his departure from PHP to Ruby on Rails as follows:
Now, with Rails, there are a team of passionate geniuses contributing to this web-making framework daily. It’s small enough that you can stay on top of it, and watch this framework get more and more powerful by the week. Improvements that are pragmatic not political. People using it to make effective websites, contributing to the shared framework around it as they go. Why not take advantage of all this brilliant work?
Congratulations, Derek! And congratulations to the star team of core Rails contributors that he has chosen to assist him in the transition: Jeremy Kemper (bitsweat) and Tobias Luekte (xal). Without a doubt two of the very finest Rails developers out there. Great choice!
Also, I love how Derek prefaces his comment section:
Please no flames about Python, PHP, Java, or MySQL. My choice to use Ruby + Postgres was due to my love of them, not hate of something else
Loving Ruby, loving Rails is not about hating something else. It’s not a zero-sum game where love must be balanced with equal amounts of hate.
Jamis has a nice article demonstrating how he decreased the reload time from 2.4 seconds to just 1.1 seconds on CGI access to his Gem Rails application:
Rails’ preferred installation method is RubyGems, a convenient, powerful utility for installing Ruby libraries and applications. Unfortunately, that convenience comes at a price—loading a library via RubyGems adds some overhead. Recent releases of RubyGems have made some good progress in reducing that overhead, but it still exists.
If you’re running WEBrick or FastCGI for development, this is not an issue, though.
All the latest attention have spurred downloads of Rails to new heights and we just surpassed the 10,000th gem installation of Rails (not counting all the beta gem installs or svn:external setups)! On top of that, we have some five thousand downloads of the zip/tgz version for a total of around 15K in combined downloads. This encompasses all versions, so naturally there’s plenty of overlap and this doesn’t translate into 15K people working with the Rails (yet!).
So on this occassion, I’d like to take this opportunity to thank instead of berate other projects that have proven influential to the development of Rails.
Thanks to PHP for getting me into programming and teaching me how much immediacy matters. Thanks to Smalltalk for being an inspiration so far ahead in many areas where we’re still scrambling to catch up. Thanks to Java for being the birth place of many great ideas in frameworks such as Struts, Tiles, WebWork, Hibernate, and more.
Most importantly, of course, thanks to Matz and the Ruby community for proving such fertile grounds for creativity and achievement.
And now, let’s all hold hands and sing songs about spreading love, not hate.