Why:After all the talk about Ruby/Rails. Also, so many highly respectful people in Java community raved so much about Ruby/Rails. Probably, there is something.
Background:I am Java guy. I have one-two year experience with .NET as well but I don’t want to go back there (at least not voluntarily). Why? I like a little more methodical oriented Java community (many could read this as unnecessary complex but still). Also, it turned out that I am not so much Java developer rather I am Eclipse/IntelliJ developer. However, I like the simplicity in design, so I thought I could learn many valuable things from Ruby/Rails and probably become very passionate about them.
When:When I found out a comparably decent (for dynamic language) plugging for Eclipse – (the same debugging as in Java, some auto-completions as well) and when I find recommendation for good books – “Programming Ruby” and “Agile Web Development with Rails”. Why so late? I have 1-2 years with Python and Plone. I didn’t think that there could be something so much new or interesting.
Progress – Learning by comparison:I am learning Ruby/Rails with by reading various sources like blogs, books, articles, example applications and various tutorials. I can’t help but compare with all of my previous experience in web development. However, my experience with Ruby/Rails continues to be somehow mixed. Ruby so far is very comparable to Python (fortunately without the indentation stuff). I am still not so much after dynamic languages but I kind of like many features in Ruby and so far, Ruby is more than I expected.
Rails framework, on the other hand was a little disappointing for me (at least for now).
- Left aside all of the limitation of Active Record mapping compared to Data Mapper/Identity Map/Unit of Work patterns implemented by Hibernate (http://www.theserverside.com/articles/article.tss?l=RailsHibernate), I still don’t understand why our domain objects should inherit from Active Record base class. So many problems because of framework inheritance (also seen in Entity Beans!). What's more, how we unit test our domain objects without going to a database?
- The whole approach of defining the model in a database first as well as thinking of database state instead of object behavior looks to me like we are going way back.
- After having successful implementation with pure html template (Tapestry), it is not clear to me why we are going back to early days of php, jsp and asp with spaghetti mix of ruby code within html tags.
- Also, after working two years with component based web framework like Tapestry, JSF and even ASP.Net, it is very hard for me to accept that I have to iterate through elements every time when I just want to have a simple table, for example.
On the positive side, I never saw something even close in Java to the controller/listeners implementation in Rails. I was really impressed by this simplicity.
NextOverall, I am still excited to continue learning Ruby and Ruby on Rails. I see some benefits in creating not to complex websites, creating fast prototypes, huge potential in testing and even in the integration where we need more “relax” and definitely more simple way of doing things. Besides, if Ruby turns out to be big and there are exciting projects to work on, I don’t want to miss them.