back

by rbanffy·17y ago·view on hn ↗
"it never takes long before I reach a point where I feel like I’m no longer programming in Ruby."

This echoes perfectly my feelings about Rails. I have tried, several times, to do something with it, but I always hit some magical wall or mythical creature that demands something from me I really don't know what it is.

If I have to define the main difference between Rails and Django is that Rails is a DSL for building websites on RDBMSs. Django is a web framework for building web sites with RDBMSs. Django stuff is Python. Rails stuff is almost, but not quite, entirely unlike Ruby.

3 comments
> Rails stuff is almost, but not quite, entirely unlike Ruby.

I really like Python and have the exact opposite opinion as you. That is, to me, Rails is very like Ruby and Django is unlike anything else done in Python. Django has hindered me every time I've tried to use it. By comparison, Cherrypy, storm-orm, SQLAlchemey, Mako, etc are all pretty straight forward. Django is out in left field for me.

I've never done anything more than "Hello World" with Rails, but interestingly, I am increasingly getting exactly this feeling with the framework I am using - Grails (groovy based). There are so many syntactic games played to make things look minimalist and cool that it is barely possible to understand anything it does from first principles. The problem with that is that throughout my career I have continually found that to be successful I have to understand things several layers below where I am operating at. There are always unexpected behaviors, bugs, features you don't understand properly that bite you in the process of development. Time and time again it's been the fact that I can dig right into what's going on several layers below that has saved me. I don't really believe that any of these frameworks is so wonderful that this won't be the case in the future, so it makes me very uneasy about this kind of thing.
Rails is a DSL for building websites on RDBMSs. Django is a web framework for building web sites with RDBMSs.

Interesting. I would consider this an argument in favor of Rails.

It's only being suggested that Rails ties your website structure to your internal database model more than Django does, and that might be less ideal for your users.
Only by convention and common practice though. You can easily mix and match any part of the MVC as you see fit. This is where the "magic" comes in. Rails gives you a set of very sane, most-common-scenario conventions that are the basis for it's huge upfront productivity. Obviously once you step out of this convention zone you're going to hit a wall, because you'll actually have to write code. It just feels like a wall because everything that led up to it was so damn quick.