In working with Ruby, and specifically Ruby on Rails, I've developed a few opinions about the underlying design, architecture, but more so the development principals and philosophies. Note that I wouldn't classify myself as a Ruby nor a Rails expert, although I do have extensive experience with other languages and frameworks.
Both Ruby and Rails are philosophy heavy. This isn't inherently a bad thing, in my
opinion. These communities are rife with smart people writing smart software; you
wouldn't want the opposite, or any other combination thereof. The gripes that I
do have are in the places where those smarts are complimented to the point where
they metamorphose into arrogance. Please don't get caught up on the word arrogance.
Keep going. I just couldn't find a less provocative synonym.
Let Rails be decomposed into three pieces - the model (ActiveRecord), view (ActionView and ERb, in my case), and controller (ActionController) components. When building any Rails application, one is sure to work with all three. Therein, lies the first issue; Rails owns all.
Configuration has use
Rails (and Ruby) favor convention over configuration. I think this is absolutely a
good, general, idea. Having worked with things like Spring and Java in general, I would welcome
a bit less in the way of configuration, in some cases. That said, in the case of Rails,
there are certain things I wish I could configure via (something like) XML rather than
code. For instance, the route configuration in Rails (aka: mapping URLs to controllers)
is done in code. The code is kind of DSL-ish which makes it a bit better, I suppose, but
developing tools to parse and generate said configuration
would be painful. One
could eval the code and attempt to work with it that way, but that's not necessarily
safe, nor would it be free from a huge number of dependencies (like Rails, itself). Another
option is to replace routes.rb (the standard file name) with something skeletal that loads
configuration from XML or YAML even, but shouldn't that come out of the box? You know, in the
interest of the entire Rails community not repeating themselves and all.
Please Rails, let me use configuration where it makes sense. This is but one simple example.
Ruby on Rails. It's not new and there's no shortage of both hype and panning from all sides. Nothing is ever the panacea. There is no short cut to building complete, real world, applications. You can make it easier, but you can't take away the requirements that a client or business places on an application. Specifically, a framework, language, or library may never dictate what is possible unless there is a technical limitation or purpose. Philosophy in software is excellent; obstinance is unforgivable.
No comments:
Post a Comment