Live data from Hacker News

Thoughts about Rails from a Django guy

lenni.info

21–30 of 42 posts

Re: Thoughts about Rails from a Django guy

#21

there are drop in admin options for rails similar to what django provides as well as a i massive number of templating engines including ones like liquid which address the concerns in the article. as a general rule, i think you should probably do more than 1 simple project before evaluating any framework or language.

I use both django and rails frequently, and I've been looking for a rails version of django's admin forever. Do you have any links? All I've seen are things like activescaffold, but that's not even anywhere near being comparable.

Typus is excellent, only drawback is weak documentation + the authorization/authentication system lies outside your application. It's extensible enough to add in analytics pages, etc. I use it in every project.

http://github.com/fesplugas/typus

Re: Thoughts about Rails from a Django guy

#23
Interesting. Both are great frameworks. My thoughts are:

I like how django lacks all that directory structure and you can easily use a single file for your models.

Django templates are way more powerful and safer than erb / haml, etc.

I wish there was a port of django templates in ruby. If so my preferred environment would be sinatra + datamapper + django templates.

Re: Thoughts about Rails from a Django guy

#24

About two years ago I tried a lot of different frameworks and languages to find which one would suit me best. After having tried various PHP frameworks, J2EE, Perl I arrived at Django/Python. The plan was to continue on to Rails after Django, but I loved Django so much that I couldn't imagine that Rails could be any better. Seems like I was right ;) Like the author, I too think Django's default directory structure do…

As somebody who has used both Rails and Django commercially I can safely say that I prefer Rails over Django even though I like Python more as a language.

This guy marks several advantages of Rails as weaknesses.

Migrations for example. In Django you have to migrate manually, or lose data. Lack of migrations is not an advantage.

Templates. The Django template language is one of the worst in existence. It is utterly inflexible and hard to use. It is slowly getting better: now you can use `if a == b` instead of `ifequal a b`. Why not go all the way to a usable and powerful template language?!

Re: Thoughts about Rails from a Django guy

#25
post #17
post #9

I subscribe to the view that the template language is for designers and should only allow safe constructs. As someone who does both design and programming, I hate template systems that do this with a passion. I don't want to have to learn another language just so I can write templates. Especially when that language makes me jump through hoops to do various simple tasks the designers didn't anticipate--which is the ca…

It's funny the author put templating as one of the things he dislikes about rails, especially when the Django templating system is probably one of the worst (of all templating systems out there). They invented their own pseudo language for templating so anything more complicated requires you to write your own special helper functions. I remember back in Django 0.9 (which is still fairly recent), I had to write templa…

I agree this was frustrating initially. After a certain number of django projects most of the django devs I know use the heck out of it's modularity. If the templating system is driving you insane drop in Jinja2 and go. If it just needs to be tweaked then implement the template command yourself.

I felt confined and frustrated with Django until I realized that it was built with the intention that developers should just crank code on top of it. And not just page code - anything that you need. It's more than just an end product that is just configured, tweaked and templated. Of course ruby similar in the same way... But in comparison to java and .NET web frameworks this was a big change.

Why couldn't they just write it in python instead of inventing strange keywords like "ifequal"?

I think they were trying to get away from the horrid nastiness that had become php or before that cgi. Yet they still wanted to provide options for designers. It definitely has a learning curve and requires the programmer to just roll with it and adopt the "django way". At least until you figure out you can just move to another templating system.

http://docs.djangoproject.com/en/1.2/howto/custom-template-t...

http://docs.djangoproject.com/en/dev/ref/templates/api/#topi...

http://djangosnippets.org/snippets/2063/

Re: Thoughts about Rails from a Django guy

#26
post #24

About two years ago I tried a lot of different frameworks and languages to find which one would suit me best. After having tried various PHP frameworks, J2EE, Perl I arrived at Django/Python. The plan was to continue on to Rails after Django, but I loved Django so much that I couldn't imagine that Rails could be any better. Seems like I was right ;) Like the author, I too think Django's default directory structure do…

As somebody who has used both Rails and Django commercially I can safely say that I prefer Rails over Django even though I like Python more as a language. This guy marks several advantages of Rails as weaknesses. Migrations for example. In Django you have to migrate manually, or lose data. Lack of migrations is not an advantage. Templates. The Django template language is one of the worst in existence. It is utterly i…

> As somebody who has used both Rails and Django commercially ... In Django you have to migrate manually, or lose data

If you've been using Django "commercially", then how come you haven't heard of South? ... http://south.aeracode.org/

Everybody in the community that wants migrations is using it.

> Why not go all the way to a usable and powerful template language?!

In Django components are more decoupled than in Rails. You can replace that templating engine.

Also, Django's templating system is really not that inflexible or hard to use ... quite the contrary, it comes with many things out-of-the-box that aren't standardly provided by other web frameworks ... like the ability to cache page fragments.

Re: Thoughts about Rails from a Django guy

#27
post #24

Earlier quoted context omitted.

As somebody who has used both Rails and Django commercially I can safely say that I prefer Rails over Django even though I like Python more as a language. This guy marks several advantages of Rails as weaknesses. Migrations for example. In Django you have to migrate manually, or lose data. Lack of migrations is not an advantage. Templates. The Django template language is one of the worst in existence. It is utterly i…

> As somebody who has used both Rails and Django commercially ... In Django you have to migrate manually, or lose data If you've been using Django "commercially", then how come you haven't heard of South? ... http://south.aeracode.org/ Everybody in the community that wants migrations is using it. > Why not go all the way to a usable and powerful template language?! In Django components are more decoupled than in Rail…

Of course those are valid points but we are comparing default feature sets here. Otherwise Rails has a crippled template language, database generated from model and automatic admin too.

Have you actually used Rails? Rails has fragment caching built in and you can use a different template engine very easily (just install the engine xyz you want to use and write templates with extension .xyz instead of .erb)

Re: Thoughts about Rails from a Django guy

#28
post #17
post #9

I subscribe to the view that the template language is for designers and should only allow safe constructs. As someone who does both design and programming, I hate template systems that do this with a passion. I don't want to have to learn another language just so I can write templates. Especially when that language makes me jump through hoops to do various simple tasks the designers didn't anticipate--which is the ca…

It's funny the author put templating as one of the things he dislikes about rails, especially when the Django templating system is probably one of the worst (of all templating systems out there). They invented their own pseudo language for templating so anything more complicated requires you to write your own special helper functions. I remember back in Django 0.9 (which is still fairly recent), I had to write templa…

Django 1.2 has more sane if tags. No more need to use ifequal

Re: Thoughts about Rails from a Django guy

#29
post #17

Earlier quoted context omitted.

It's funny the author put templating as one of the things he dislikes about rails, especially when the Django templating system is probably one of the worst (of all templating systems out there). They invented their own pseudo language for templating so anything more complicated requires you to write your own special helper functions. I remember back in Django 0.9 (which is still fairly recent), I had to write templa…

Django 1.2 has more sane if tags. No more need to use ifequal

I just find it strange that it took the Django project so long to finally realize this. Django 1.2 was released in May 2010 -- we shouldn't be "innovating" on something as basic as an "if" statement on a 15 year old language.

The unfortunate part is that many systems still use Django 0.9 and when one writes code there, you have to remember to use "ifnotequal" and "ifequal" as two different distinct keywords in their templating language. For example, if you were on google app engine and wanted to use their included django templating library, you'd be stuck with that horrible stuff.

Re: Thoughts about Rails from a Django guy

#30
post #25
post #17

Earlier quoted context omitted.

It's funny the author put templating as one of the things he dislikes about rails, especially when the Django templating system is probably one of the worst (of all templating systems out there). They invented their own pseudo language for templating so anything more complicated requires you to write your own special helper functions. I remember back in Django 0.9 (which is still fairly recent), I had to write templa…

I agree this was frustrating initially. After a certain number of django projects most of the django devs I know use the heck out of it's modularity. If the templating system is driving you insane drop in Jinja2 and go. If it just needs to be tweaked then implement the template command yourself. I felt confined and frustrated with Django until I realized that it was built with the intention that developers should jus…

Shouldn't the included templating system be the one everyone uses? It doesn't make sense to include a templating system if everyone will eventually just replace it with something better. Even though there are alternative rails templating systems out there, I would say a good 80% of the projects out there use the default "erb" mechanism for templates -- it's simple, it's ruby, and it works. Capitalization or minor string manipulation in erb doesn't require one to write a template filter function somewhere else.

It's also interesting that in Django 1.2, they pulled away the nastiness of "ifequal" and "ifnotequal". Also, I don't buy their argument that the Django templating system is easier for "designers". Most designers whom I've worked with also do designs in other frameworks and Django's system is no more foreign than jsp, asp, or erb.

Post reply on HN