I thought it only takes a few days to write a web app in Rails (minutes actually). OK, humor aside - I am coming from Java and trying to pick up Rails, and I have to say, I am really not that enchanted. Many things in Rails just seem extremely ugly when you are used to the clean Java code. Passing everything around in Hashes does not seem elegant to me, and I wonder how Code completion is supposed to work with that. Maybe if you know the whole Rails by heart, it is OK and you don't need completions, but I am lazy. Java is not that ugly - it might look like a lot of typing, but actually most of it is done by Code completion/Code generation these days. Spring also offers quite a few "Code by Convention" features, so it is not that much harder than Rails. <p>For example with Java annotations, I only have to press ctrl+space in Eclipse above a variable in a model, and it gives me the options for mapping all sorts of things with hibernate (ie many to many etc). Much nicer than looking things up in a book. Presumably it would be possible to set up the Dev Environment to be able to offer completions in the rails migrations, but that would be a hack - in Java, it follows from the types... Oh and btw, isn't it ugly to have the model code distributed all over the place (migrations, model, database schema)? I'd rather have it all in one place.<p>Internationalization seemed very fishy in Rails, too, from what I gather from "Agile Rails". <p>Anyway, sorry for the rant - I really have to force myself to complete at least one Rails application, but my expectations are rather low. At least perhaps I can appreciate Java again afterwards...<p>I like Ruby, but the reality is probably that in a typical Web Application, it's features don't come into play that often. It's mostly CRUD, after all...
There should be a clear distinction between Java web development (JSP), and GWT. I think this creates confusion with some. GWT compiles restricted Java code to native Javascript. From an implementation perspective, it is not similar to JSP or JSF at all. When talking about "using Java", one should distinguish if they are talking about GWT because it is totally different.<p>I agree with the reasons mentioned for not using GWT, with the exception of the loading process (this is no longer used in GWT 1.4) and the CSS/HTML argument. You could code your entire site in HTML/CSS if you wanted to, wrapping your HTML in HTMLPanels.<p>That being said, I am not surprised that someone would switch from GWT to RoR. It really depends on what you need. I think for most applications, GWT is simply overkill. Sometimes people dont need to utilize RPC's or client side processing. Rails is so fast and elegant and you can reach desirable results quickly. And lots of people are simply tired of looking at Java syntax from their day jobs (I think this partly fuels the Java-hate).<p>But I would argue that there are times when RoR is not the best choice. The application I'm working on would not be possible for me to build in RoR (realistically). It could be, but I would have to write entire RPC and event listener frameworks to handle the level of complexity required for the asynchronous components. I need bullet-proof debugging, a native Ajax environment, low-level server back-end control, and high-level RPC abstraction right out of the box. We'd like to internationalize this stuff too, and directly integrate iPhone support (loaded via user-defined properties). It is for this type of stuff that GWT is my tool of choice. Sometimes complicated tasks require leveraging tools a bit more complicated to get the job done...
Thanks for posting this! It's the sort of informative topic that probably won't generate a lot of commentary (as opposed to the the controversial type that does). But don't interpret quiet as a lack of interest - this is one of the reasons I scan hacker news. <p>Actually, I'm looking for a more comprehensive way way to do authentication in Rails (that doesn't require as much manual intervention as I had to do last time), and this article definitely helped out.
I see you moved away from Java. Have you guys tried JBoss Seam (<a href="http://www.jboss.com/products/seam" rel="nofollow">http://www.jboss.com/products/seam</a>)? If not I strongly suggest you give it a try. If you love RoR I'm almost sure you'd appreciate JBoss Seam.
Great write-up of your experience! It's particularly interesting that you moved away from Java/GWT to RoR. Did you find handrolling your own javascript (+ frameworks) to be just as productive as the Java/GWT approach? (My RoR app has most of the funky javascript GUI after authorization, so it's not indexable anyway.) <p>Some other questions:<p>- When do you plan on releasing your git bundle for TextMate? :)<p>- Has there been any gotchas when using Joyent's Sun platform?<p>- Did you consider using extjs? (<a href="http://extjs.com/tutorial/using-ext-grid-ruby-rails" rel="nofollow">http://extjs.com/tutorial/using-ext-grid-ruby-rails</a>)<p>Thanks again for posting.
Isn't this quite a big risk? Creating an entire application without knowing the platform requires quite some confidence that it is going to deliver and live up to the hype. I'm glad it worked out for them, but I know my company won't start a new project with Rails because we don't have much knowledge about it. Scaling, especially, seems to be a challenge sometimes (cf Twitter and the related controversy).