I've been calling them "RARE" ( Rails-Angular-React-Ember ) apps because of how similar they tend to be in how the front-end interacts with the back-end. I agree with you that they are powerful and deserve a lot more consideration.
We use Rails + Angular here, and I think probably the biggest thing that was preventing us from seeing the potential that they had together at first was that Angular ( at least Angular 1 ) did not have very strongly defined abstractions with clearly delineated responsibilities. Compare that to Rails, which does, and in order to make the two "fit" you need to come to a decision as to what the two's responsibilities are in respect to each other, since some of the functionality overlaps ( what does it mean for instance, to have client and request level routing in your application? ). I don't think there is a lot of consensus about these questions because there are disagreements as to "which is better". Such as: "Is it better to define your templates in js/coffeescript or use the Rails templating engine?". On the other hand, if you just choose JS, a lot of those "disagreements" disappear, because really you are then choosing among libraries rather than general strategies - most of the general strategies become default, in other words. I think the consensus on how to approach a JS-only app, combined with the fact that it is much newer ( and therefore more exciting and more written about ) , is why you see more people espousing a pure SPA/JS application over a Rails/Angular/React/Ember hybrid. Personally, I love the level of structure that both frameworks bring to both sides of the web app. On Tue, Jun 30, 2015 at 8:39 AM, Dan Cancro <[email protected]> wrote: > Rails is huge. Angular is huge. How did the new big thing become MEAN > instead of a stack with Rails and Angular? RAP (Rails, Angular, PostgreSQL) > has a nice ring, no? > > Yeah, having JavaScript on both sides is nice, but from what I've read, > it's not really *that* nice, certainly not as big a deal as leveraging > all that Rails takes care of. Maybe I'm wrong about that. Does restlessness > actually dictate technology direction so much? If Rails were exactly as it > is but had the same birthday as Node, would things be different? > > > Here's my trade-off report > <http://www.dancancro.com/compare-app-technologies/> between Rails and > Node > > Ruby on Rails offers: 1% that Node.js. doesn't > * 0.2% Safe from cross-site request forgery CSRF > * 0.2% Safe from stored cross-site scripting (xss) attacks > * 0.2% Object-relational mapping > * 0.1% Approach to frontend routing or state changing, Front-end routes > auto gen'd from back-end routes > * 0.0% Well tested before a release (top 10% in class) > * 0.0% Many unit tests (top 10% in class) > * 0.0% Uses inheritance > * 0.0% Reusable components, using mixins > * 0.0% Reusable components, for UI > * 0.0% Reusable components, for UI, using Web Components > * 0.0% Hierarchical components > * 0.0% State and state-modifying code in same place > * 0.0% Server-side dependency injection (doesn't need) > * 0.0% Object persistence > * 0.0% Supports dynamic, validated fields > * 0.0% Server-side routing > * 0.0% Server-side routing, with RESTful XHR controllers > * 0.0% Route by convention-over-configuration > * 0.0% Regular expression routes > * 0.0% ||= operator > * 0.0% Destructuring > * 0.0% Ellipsis variable parameter syntax > * 0.0% Enumeration Type > * 0.0% Function parameter defaults > * 0.0% Generators (Yield) > * 0.0% Implicit return > * 0.0% Named function parameters (keyword args) > * 0.0% Numbers are objects > * 0.0% Object oriented, supports classical inheritance > * 0.0% Object oriented, supports classical inheritance, with multiple > inheritance > * 0.0% Object oriented, supports classical inheritance, with multiple > inheritance, using mixins > * 0.0% Object oriented, supports classical inheritance, with multiple > inheritance, using extension > * 0.0% Object oriented, supports dynamic method lookup > * 0.0% Optionals > * 0.0% Private properties > * 0.0% String interpolation > * 0.0% String multiplication > * 0.0% Unicode strings support > * 0.0% Convention over configuration (top 10% in class) > * 0.0% Command-line Interface > * 0.0% Command-line Interface, is extensibile > * 0.0% Command-line Interface, does scaffolding > * 0.0% Command-line Interface, does database seeding > * 0.0% Command-line Interface, does database migration/evolution > * 0.0% Bulit-in webserver > * 0.0% App template system > * 0.0% Opinionated (top 25% in class) > * 0.0% Few silent failures (top 10% in class) > * 0.0% Easy to test, logic (top 10% in class) > * 0.0% Fast to develop app (top 10% in class) > * 0.0% Fast to build app (top 10% in class) > * 0.0% Fast to load app (top 10% in class) > > > =================== > =================== > > > Node.js. offers: 0% that Ruby on Rails doesn't > * 0.0% Large installation base (top 10% in class) > * 0.0% Extensible in C/C++ > * 0.0% Can run without plugins in a browser (Use Browserify) > * 0.0% ++ and -- operators > * 0.0% += for strings > * 0.0% Event driven > * 0.0% Functional, with anonymous functions > * 0.0% Functions can be called before they are declared > * 0.0% Object oriented, supports prototypal inheritance > * 0.0% String addition > * 0.0% Typed, dynamically > * 0.0% Typed, dynamically, with automatic type conversion > * 0.0% Automatic memory management > * 0.0% You can see changes without recompiling > * 0.0% Little boilerplate (top 10% in class) (lots of modules written > by people) > * 0.0% Low accidental complexity (top 10% in class) > * 0.0% Small # of data structures (top 10% in class) > * 0.0% Lazy (on-demand) loading of client-side code > * 0.0% Lazy (on-demand) loading of client-side code, JavaScript > * 0.0% Non-blocking, event-driven I/O > * 0.0% Threads > > See any errors in this? Click here > <http://www.dancancro.com/technology-questionnaires/>. > > -- > You received this message because you are subscribed to the Google Groups > "AngularJS" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/angular. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
