My last posts haven't been quite technical, and they haven't been quite recent too- I'm sorry, yet I just don't have time. As a brief follow-up: it has been overwhelming in San Francisco ( except for the 300$-dentist bill ), and I'm so looking forward to coming back.
And, tada, I've been spending the last few weeks just entering Rails ( a Ghetto? maybe ) a bit more than I did before. As always, there are cool things to tell. And not so cool things, too. Start with the good ones.
Rails has proven to work extremely well in pre-production mode. No framework-sourced flaws, bugs, whatever. Just nice, and with some caching-salt, speed hasn't been an issue, in contrast, it has been amazing.
That's the good part of it. The bad part is that Rails claims to be capable of working in a distributed environment, providing services ( they don't call them Web Services anymore ) addressable via REST ( buzzzz ) over HTTP, of course. Well, that's not quite true. If you stick with the example given in the docs, and are in fact happy with a remote object capable of experiencing an unauthenticated change of some first name, this is nothing but true. But when it comes to some other features, e.g. associations or caching, one question came up: are they serious?
Let's do some demos. In case you want to include objects of a has-many relationship, the way of choice is ( according to the ActiveRecord::Serialization docs ) either to call to_xml with really ugly parameters ( such as @ship.to_xml :include=>[:passengers, :sailors ] ) in a non-dry manner or to override to_xml, both not being exactly Rails-like, ugly, hard to maintain and only loosely coupled with real-world requirements.
The other part, the consuming part where ActiveResource is indeed responsible for handling everything, has been consequently kept free of useful stuff. This could on the one hand be a pro for people hating Rails' magic, but it's just quite far away from being usable. And it has nothing in common with the way ActiveRecord behaves. Any options? Sure.
At the moment, I'm sticking with HyperactiveResource, the funniest named plugin ever. It extends ActiveResource to play a bit more nice, yet it's not the ultimate answer, but a great extension, still. If you're into some serious Rails stuff with some distributed thingies, you should give it a try.
So what's missing? The feeling to work with something that has been designed by someone who actually uses it doing more than changing first names. I'm really disappointed by having to deal with the framework, something I wasn't used to with Rails before in that intensity. And while Java EE may be a pain, for distributed stuff, it's still a very good way if you need reliable and consistent, proven-to-work solutions.
In my next post, I'll talk about my android experiences so far. Love it :-)