Ich habe durch eine ähnliche Reihe von Fragen gearbeitet. Es gibt einige gute Tools, mit denen Sie AngularJS direkt in Ihre Rails-Asset-Pipeline integrieren können, und sie sehen für mich gut aus, wenn Sie nur ein bisschen Angular wollen.
Wenn Sie jedoch eine vollständige Front-End, aka eine einzelne Seite Web-App wollen, denke ich, dass Sie irgendwann durch die Kompatibilität und einige der Werkzeuge begrenzt werden. Ich habe das Gefühl, dass die Rails-Edelsteine nicht ganz mit Angular Schritt halten, und Sie werden in Versionskonflikte geraten. Ich habe auch immer mehr Tools für Angular als eigenständiges Programm gesehen, und mir gefällt die Projektvorlage ng-boilerplate sehr gut. Ich mag auch viele der Testwerkzeuge wie Karma, und ich habe nicht wirklich einen Weg gefunden, Karma mit Schienen zu integrieren.
Aus diesem Grund entschied ich schließlich, dass ich die zwei trennen würde. Anfangs habe ich das durch Erstellen einer Rails-Anwendung und einer separaten winkelförmigen Anwendung (separate Verzeichnisse) getan. Ich habe ng-boilerplate als Rahmen für das eckige Ende verwendet. Ich schrieb eine tutorial on that. Dies wurde schließlich ein wenig frustrierend, und ich schrieb some more thoughts on it, der größte Ärger war, dass ich zwei Git-Repositories hatte und es war nervig, sie synchron zu halten. Es ist auch etwas lästig, mit einer IDE über zwei Verzeichnisse zu arbeiten. Ich wechsle nun zu Rails und eckig im selben Ordner und sie scheinen nett zu spielen, da jeder verschiedene Verzeichnisse in diesem Projekt verwendet.
In dieser aktuellen Struktur verwende ich die grun Setup, die mit ng-Boilerplate kam, um den gesamten Code zu minimieren, zu verpacken und auch Karma-Unit-Tests durchzuführen. Ich habe noch nicht die End-to-End-Tests genagelt, aber es steht auf meiner Liste. Ich habe festgestellt, dass dies eine relativ produktive Arbeitsumgebung ist. Meine gewählte Struktur für meine Seiten, Controller und Karma-Testfälle hat einen wiederholten Code (ich entscheide mich, ihn nicht auszumerzen, um die Lesbarkeit zu erhalten). Ich plane, den rail scaffold generator zu erweitern, um den javascript framework für mich zu erstellen - wenn ich also ein persons rails scaffold erstelle, wird es auch ein personal angularjs scaffold für mich erstellen. Ich werde hier aktualisieren, wenn und wenn ich diese Arbeit mache.
EDIT: Ich habe die Gerüstbauarbeiten sowie abgeschlossen, die Schienen ermöglicht, automatisch die AngularJS Elemente zu erzeugen, wenn Sie die Schienen-Modelle/Controller usw. Der Blog-Eintrag erzeugen ist hier: http://technpol.wordpress.com/2013/09/24/rails-generator-to-generate-angular-views/
ah, das sieht interessant aus.Von dem, was ich verstehe, wenn ich die angularjs in die Assets/Javascript App hinzugefügt hätte, müsste ich die angularjs App nicht vorkompilieren. Wenn ich den Grunt-Workflow verwendet hätte, müsste ich die angularjs vor der Bereitstellung neu kompilieren; wäre das korrekt? – Karan
oh, und sobald ich die app mit grunt bauen, sollte dies unter dem railsapp/public directory platziert werden? – Karan