Lately I’ve been doing a bit of Rails development for an important project at work. While I really enjoy working with the Ruby programming language and Rails (and ActiveRecord) can be huge time savers, I occasionally find myself wishing I was working with Java instead. I have several major beefs with Ruby on Rails, as outlined below:
- The Rails Community. Maybe I’m not getting an accurate picture of them since by “community” I mean the people who sit in the #Ruby and #RubyOnRails chatrooms on freenode. It seems like any question you might have about doing something with Ruby or Rails that either a) they don’t know how to do or b) there is no method that already does it, is met with the response that you shouldn’t be doing that thing in the first place. For example, yesterday I asked how I can simply get a list of tables from ActiveRecord (e.g. the same you would get from the “SHOW TABLES” SQL statement in MySQL). This was met with the response “You should already know all the tables names.” This is just one of many examples but it really captures the essence of the unwashed Rails masses.
- The Inflector!! For a system that takes the “convention over configuration” stance on development I find it mind-boggling how such an unnecessary hindrance could be injected into its very foundation. I suppose I am in the minority on this one since a lot of people really enjoy this “feature” but I absolutely despise it. First of all, when programming I rarely give object pluralized names since ultimately we are working with the singular elements of arrays vs. the arrays as a whole themselves.
- Lots of immature code and documentation out there. Coming from Perl and Java I guess I’ve been spoiled on documentation (more so with Java than Perl). When dealing with Ruby there are lots of poorly or completely undocumented methods and even a lot of code examples that simply don’t work as advertsied.
So there, I’ve vented my major beefs about Ruby and Rails. I really do enjoy the Ruby programming language though, it’s really nice to work with and it’s certainly a step up from Perl as far as very-high level languages go. If you are working on any system that really needs to scale well and you want (or need) advanced Object Oriented features built into the langauge itself, I would suggeest going with Java (a language I would not consider in the “very-high level” category, but in the one below that “high-level”). You really can’t go wrong with the documentation and the mature frameworks available to work with, not to mention the abundance of excellent development tools! I suppose the only major downside (for me) when working with Java is the tediously strict data typing and lack of syntactic sugar that makes coding in Perl or Ruby so much fun.
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.
“You should already know all the tables names.”?
December 25, 2009 at 9:51 amThis is so funny.
If i created a database, i would provide you a list of table names.