Verfasst: Mittwoch 13. Januar 2010, 12:05
Wenn man bei Django eigene User-Objekte haben will, verliert man wahrscheinlich das auth-Modul und damit dann auch das Admin-Modul. Kann man beides weglassen, aber dann bleibt von Django wenig übrig (views, URL-mapping, ORM) insbesondere wenn man diese beiden als die Kronjuwelen ansieht, die das Rahmenwerk von anderen (wie z.B. Rails) unterscheiden.
Ich hatte man ewig und drei Tage gesucht, ob ich irgendwie per Monkey-Patching die User-Klasse austauschen und trotzdem noch das Admin UI benutzen kann. Uns war die Längenbeschränkung von 30 für den username (wo nämlich etwas der Art name@domain rein sollte) zu klein. Inzwischen würde ich ja ganz pragmatisch sagen: Django forken und einfach die Stelle ändern. Das ist in 10 Minuten gemacht.
@audax: Das Problem ist, dass das username-Feld viel zu kurz ist.
@kostonstyle: Rails jetzt nur, weil du "username" nicht so benutzen kannst, wie du willst? Wow. Oder gibt es weitere Gründe? Bei Rails fehlen dir im Gegensatz zu Django schon mal eine eingebaute Authentifizierung und natürlich auch das eingebaute Admin-UI. Für beides gibt es dafür jeweils mindestens ein halbes Dutzend Alternativen, die zu evaluieren echt lange dauern kann. Okay, dafür hast du bei Rails Datenbank-Migrationen. Aber bedenke, dass der ORM von Rails (ActiveRecord) noch primitiver ist, als der von Django, der (IMHO zu unrecht) auch gerne mal nieder gemacht wird. Erst Rails 3 (mit dem ich ehrlich gesagt anfangen würde) zieht da gleich - oder man nimmt gleich DataMapper bzw. MongoMapper und damit gar keine relationale DB mehr. Spart dann auch die Datenbank-Migrationen ein. Oh, man verliert bei Rails natürlich auch das Django-Template-System, welches offenbar doch so beliebt ist, dass es mindestens 20 verschiedene Template-Systeme für JavaScript (und JQuery) gibt, die alle mehr oder weniger dieses nachbauen. Klar, für Rails kann man's mit Liquid nachrüsten (und Liquid ist tatsächlich besser in der Implementierung als das, was die Django-Entwickler fabriziert haben) doch das scheint mir in der Rails-Community kaum einer zu nutzen. Entweder ERB oder Haml, wenn man zu den coolen Jungs gehören will. Beiden Ansätzen fehlt Inheritance, was aber wohl mit Rails 3 kommen wird. In Yehudas Katz findet man z.B. eine eine Implementierung für Template-Inheritance, doch auch hier gilt wieder, man muss es sich selbst zusammensetzen und viel suchen. Das finde ich leider - so sehr ich Ruby und Rails auch mögen möchte und das Programming Ruby-Buch hier schon seit einigen Wochen auf meinem Schreibtisch liegt - unnötig umständlich.
Also, was waren deine Gründe, Rails zu benutzen (und warum nicht Merb, Sinatra, Rango, Ramaze, Cramp oder wie das Rahmenwerk der Woche gerade heißt)?
Stefan
Ich hatte man ewig und drei Tage gesucht, ob ich irgendwie per Monkey-Patching die User-Klasse austauschen und trotzdem noch das Admin UI benutzen kann. Uns war die Längenbeschränkung von 30 für den username (wo nämlich etwas der Art name@domain rein sollte) zu klein. Inzwischen würde ich ja ganz pragmatisch sagen: Django forken und einfach die Stelle ändern. Das ist in 10 Minuten gemacht.
@audax: Das Problem ist, dass das username-Feld viel zu kurz ist.
@kostonstyle: Rails jetzt nur, weil du "username" nicht so benutzen kannst, wie du willst? Wow. Oder gibt es weitere Gründe? Bei Rails fehlen dir im Gegensatz zu Django schon mal eine eingebaute Authentifizierung und natürlich auch das eingebaute Admin-UI. Für beides gibt es dafür jeweils mindestens ein halbes Dutzend Alternativen, die zu evaluieren echt lange dauern kann. Okay, dafür hast du bei Rails Datenbank-Migrationen. Aber bedenke, dass der ORM von Rails (ActiveRecord) noch primitiver ist, als der von Django, der (IMHO zu unrecht) auch gerne mal nieder gemacht wird. Erst Rails 3 (mit dem ich ehrlich gesagt anfangen würde) zieht da gleich - oder man nimmt gleich DataMapper bzw. MongoMapper und damit gar keine relationale DB mehr. Spart dann auch die Datenbank-Migrationen ein. Oh, man verliert bei Rails natürlich auch das Django-Template-System, welches offenbar doch so beliebt ist, dass es mindestens 20 verschiedene Template-Systeme für JavaScript (und JQuery) gibt, die alle mehr oder weniger dieses nachbauen. Klar, für Rails kann man's mit Liquid nachrüsten (und Liquid ist tatsächlich besser in der Implementierung als das, was die Django-Entwickler fabriziert haben) doch das scheint mir in der Rails-Community kaum einer zu nutzen. Entweder ERB oder Haml, wenn man zu den coolen Jungs gehören will. Beiden Ansätzen fehlt Inheritance, was aber wohl mit Rails 3 kommen wird. In Yehudas Katz findet man z.B. eine eine Implementierung für Template-Inheritance, doch auch hier gilt wieder, man muss es sich selbst zusammensetzen und viel suchen. Das finde ich leider - so sehr ich Ruby und Rails auch mögen möchte und das Programming Ruby-Buch hier schon seit einigen Wochen auf meinem Schreibtisch liegt - unnötig umständlich.
Also, was waren deine Gründe, Rails zu benutzen (und warum nicht Merb, Sinatra, Rango, Ramaze, Cramp oder wie das Rahmenwerk der Woche gerade heißt)?
Stefan