ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 03 Jun 2013, 16:11 
Offline
Lehrling

Registriert: 13 Mai 2009, 11:18
Beiträge: 57
Hallo liebe Railsprogrammierer,

ich möchte hier mal ein Thema anstoßen, in dem es hauptsächlich um Ideen und mögliche Konzepte in Bezug auf "Modularisierung" von Rails geht. Mir geht es hier nicht um eine konkrete Implementierung, sondern eher darum, was der beste Weg ist, welche Ideen ihr zu dem Thema habt und ob und ggfs. wann das Thema Sinn macht.

Was genau meine ich mit "Modularisierung"?

Ich habe aktuell ein Projekt, das über die Jahre gewachsen ist. Ich kenne mich in dem Projekt aus, weil ich es seit Jahren betreue. Der Code dafür ist genau wie Rails es vorschreibt strukturiert. Es gibt also Models, Controller, Views, etc. pp. Mit der Zeit haben sich einige Kernthemen herausgestellt, die natürlich ausgelagert wurden, so z.B. ein generisches Export-Modul, das im lib-Ordner liegt und je nachdem bei einem Model eingebunden wird, wenn es benötigt wird oder nicht.

Mit "Modularisierung" meine ich genau diese Art von Auslagerung, aber noch mehr. So könnte man darunter auch die Verlagerung von Funktionen in abgetrennte Bereiche verstehen, die über eine interne API mit der eigentlichen Anwendung kommunizieren. Die Projektmanagement-Software "Redmine" macht das z.B. über Plugins, die sich so über Callbacks o.Ä. in den "Kern" der Anwendung einbringen können.

Um sowas praktisch auch umsetzen zu können, gibt es mehrere Möglichkeiten. Zum einen könnte man die einzelnen Funktionen im Ordner "lib" ablegen, genauso könnte man diese im Ordner "plugins" ablegen oder einen eigenen Ordner erstellen, etc. pp. Die Möglichkeiten sind hier nahezu unbegrenzt.

Die Frage ist doch eher, ab wann es Sinn macht eine solche Modularisierung anzugehen und wann nicht. Klar, bei einer einfachen Blog-Anwendung macht das wohl wenig Sinn, aber bei "größeren" Anwendungen kann das durchaus eine Option sein. Beispielsweise bestehen einige Models aus oben genannter Anwendung aus mehreren hundert Zeilen Code, die nicht unbedingt auch wiederverwendet werden.

Ich möchte hier eine Diskussion über dieses Thema anregen, welche Vor- und Nachteile eine solche Implementierung hat und welches die besten Wege dafür sind eine solche Modularisierung anzugehen.

Ich mache mal den Anfang, in dem ich behaupte, dass eine Modularisierung immer dann Sinn macht, wenn die Anwendung größer wird und aus in sich unabhängigen Komponenten besteht. Beispielsweise kann eine Nutzerverwaltung eine unabhängige Komponente sein.
Über eine interne API, die vom Kern des Systems bereitgestellt wird, lassen sich dann die Routen, Controller, Models, Views, etc. einbinden. Diese API stellt ebenfalls Methoden für ein Menü, eine Berechtigungsverwaltung und evtl. noch Einstellungsmöglichkeiten zur Verfügung.
Am Ende hat man ein System, dass in "Kern" und "Funktionen" aufgeteilt ist.

Wie denkt ihr über das Thema, habt ihr ähnliches im Einsatz oder denkt ihr, sowas ist - da Rails an sich ja schon gut strukturiert ist - überhaupt nicht notwendig?

Ich freue mich auf rege Teilname!

Martin


Nach oben
 Profil  
 
BeitragVerfasst: 16 Jul 2013, 02:44 
Offline
Schüler

Registriert: 10 Jan 2011, 22:04
Beiträge: 44
Hi.

Vornweg, ich habe mit rails garbeitet 2.x, 3.x, durchaus umfassend teilweise. Es ist aber nicht das framework meiner wahl. Ich ziehe Ramaze vor.

maddin hat geschrieben:
Die Frage ist doch eher, ab wann es Sinn macht eine solche Modularisierung anzugehen und wann nicht. Klar, bei einer einfachen Blog-Anwendung macht das wohl wenig Sinn, aber bei "größeren" Anwendungen kann das durchaus eine Option sein. Beispielsweise bestehen einige Models aus oben genannter Anwendung aus mehreren hundert Zeilen Code, die nicht unbedingt auch wiederverwendet werden.


Selbst bei einem blog finde ich die möglichkeit irgendwann etwas darauf aufsetzen zu können ziemlich gut. Sicher mag das ein mehraufwand sein, und vielleicht teilweise auch verschwendete zeit. Aber ich benutze ein anderes konzept, dazu mehr.

Zitat:
Ich mache mal den Anfang, in dem ich behaupte, dass eine Modularisierung immer dann Sinn macht, wenn die Anwendung größer wird und aus in sich unabhängigen Komponenten besteht. Beispielsweise kann eine Nutzerverwaltung eine unabhängige Komponente sein.

[...]

Am Ende hat man ein System, dass in "Kern" und "Funktionen" aufgeteilt ist.

[...]

habt ihr ähnliches im Einsatz oder denkt ihr, sowas ist - da Rails an sich ja schon gut strukturiert ist - überhaupt nicht notwendig?


Ich habe mir ein framework, für ein framework geschrieben, Ramaze, ist nicht halb so kompliziert wie rails. Es bietet einem alles um eine ordentliche webanwendung umzusetzen, und hat kleinere helper (auth, zb). Das meiste was man umsetzen will muss man selbst machen (keine magic, wie bei rails).

Jede seite ist ein subprojekt des gesamtpakets. Hat eigene controller, views, models. Kann unterschiedliche datenbankanbindungen benutzen (oder auch gar keine) und hat einen eigenen lib und plugin ordner. Der witz dabei ist aber, das ich plugins auch unabhängig von den einzelnen anwendungen schreiben kann und diese bei bedarf einfach einbinde. So habe ich zb. ein globales authentication modul, welches ich bei bedarf einfach einbinden kann (wenn ich will kann ich sogar vorgeschriebene formulare benutzen, tu ich aber meistens nicht).

In verbindung mit git, submodules, capistrano ( wenn ich ein projekt deploye, checke ich das framework auf dem server ein, checke dann das submodul in dem framework ein lasse bundler laufer und die anwendung läuft unter nginx) ist das sehr wenig aufwand für mich. Und ich zwinge mich damit selbst dazu modularer zu schreiben. Alles was ich eventuell wieder benuzten könnte wird gleich so ausgelagert das es für das nächste (oder ein verganges projekt) wieder eingebaut werden kann.

Ich benutze das auch für sehr viel kompliziertere anwendung und ich bin sehr glücklich damit. Seit ungefähr 2 jahren produktiv in verwendung.

Innerhalb meines frameworks funktioniert das wie wenn du mittels `rails foo` ein neues projekt anlegst. Nur das es innerhalb der anwendung läuft.


Nach oben
 Profil  
 
BeitragVerfasst: 29 Jan 2014, 15:00 
Offline
Schüler
Benutzeravatar

Registriert: 29 Jan 2014, 14:52
Beiträge: 48
Wohnort: Berlin
Hi,

leider schon sehr alt der Thread, besteht noch interesse an diesem Thema?

Ich habe eine ziemlich komplexe Modularisierung grad in einem meiner Projekte hinter mir
( ca. 280 Models, ca. 440 Modules, 130 Controller usw...)

War ca. 1 Jahr Arbeit, aber jetzt ist es sehr mächtig, einzelne Apps aus den Bausteinen zusammensetzen dauert ca. ne Stunde und die Benutzer können diversen Kram über Webinterface anpassen (Farben, Verwendete Datenvorlagen wie Produktkategorien etc...)

Also wie gesagt, wenn jemand interesse hat, ich teile mein wissen gern!

_________________
Jeeht nich jibbs nich...!
----------------------------------
https://rubygems.org/profiles/friendssystems
https://github.com/florianeck


Nach oben
 Profil  
 
BeitragVerfasst: 30 Jan 2014, 20:17 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
friendssystems hat geschrieben:
leider schon sehr alt der Thread
Eben. Lass die Toten in Frieden Ruhen. /closed

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron