I understand what you are saying, but this is not correct. I know of a company that runs on Rails that is heavy into SQL for optimization. What you said could be applied as much to Rails and ActiveRecord ORM as it could be to Hibernate, EclipseLink, etc.
I think this whole topic of Rails bashing is a bit misguided. I worked in Java for many years and Ruby (CRuby/JRuby/Rails/Sinatra/etc.) also the last several years, I can say that there were definitely periods of time where I’ve wanted to bash my head into my desk. But, if you stick with it, it will treat you well.
I also see some are complaining about having to do things “the Rails™ way”. Sure, it makes things easier, but it doesn’t stop you, and in the case of legacy integration (we run alongside a substantial Java service-oriented environment that’s fairly complex along with other legacy apps/services/webapps), I just wrote some gems to handle things that we needed, so others in the same situation won’t have to go through as much trouble:
https://github.com/garysweaver?tab=repositories
Of course, the first thing to do is to search around and make use of what others are already offering. Keeping up with that is more difficult than almost any other part of my job.
It seems that I modify
problems to fit them into Rails instead of modifying Rails to adapt it
to my problems.
Well said. 100% right.
Wins Lin: how long have you been using Rails?
4 month. Both Ruby and Rails. Previous experience 1.5 years in PHP, Zend
Framework 1 and 2, was testing Python + Django. And after ZF Rails to
me:
1) is complicated
2) is occasionally comfortless
3) source code and its organisation is incomprehensible and scary
4) I cannot make any step right or left. Use only what is offered and as
written in their guide and API.
But I hope, yes I hope that this will pass when I gain more experience.
But for now I can say for sure that I wouldn't develop my own project in
Ruby and Rails. Don't understand why people around want their projects
in Rails. The only explanation (imo) is a good marketing.
It’s not Rails that’s a problem here, per-se, it’s ORMs that the OP seems to have a problem with - shaping his application architecture choices. Maybe he should be using MagLev and therefore Gemstone
I agree that ORMs tend to make you think un-object-orientedly sometimes… but usually they can be worked around, and they provide a good pragmatic “best fit” for most uses. It’s pretty darn good for free!
I’ve been using Rails since 2004 and still love it. I understand a lot of the complaints about Rails and may have occasionally voiced my dislike as well. However, the complaints I often hear about Rails has more to do with the kind of coders/people the framework seems to attract than the actual framework itself. By itself, Rails is an easy to use MVC framework which can help you get a website running quickly. It’s well-designed and modular. It’s built on top of a great language, Ruby.
Really, Rails is just like any other tool. In the hands of a third-grader, a pen can create a a bona fide mess. In the hands of an artist, it can create something inspiring.
I agree that ORMs tend to make you think un-object-orientedly sometimes
Isn’t the primary purpose of ORM to provide an object oriented way of dealing with your data ?
I’ve been using Rails for 4 years, and I don’t complain. I can ask an absolute beginner in rails to build something for me, and I still get fairly modularised code thanks to the conventions, which make things suck less for the beginners. I agree novice programmers using Rails find the framework an excuse to write code without thinking about important things like SOLID principles. But I guess that’s better than a beginner writing code without a framework and not thinking about SOLID. For me, the conventions are not obstacles, most of the time they help me from going astray. If there’s something that doesn’t fit my needs, I can always write my own piece of code. From my experience, a frustrated day at work would usually be caused by bad programming and rarely the framework.