Exploring this topic is truly fascinating, and I believe many developers are pondering the same question.
To begin with, the choice largely depends on the specific project. Nonetheless, consider the following points that might aid in making your decision:
Considerations for the UI
If your application entails a sophisticated user interface with extensive user engagement (such as clicking, dragging, etc.) and aims to have a more desktop application-like interactivity, opting for the client-side approach may be most appropriate.
However, as you mentioned:
The frontend is relatively simple without a need for a complex UI, so I intend to keep client-side code to a minimum.
Rails Framework and Development Experience
It appears that DHH and consequently Rails do not prioritize a heavily client-focused approach.
It's crucial to remember that Rails originated from Basecamp, and the recent enhancements (introduced in Rails 4, such as Russian doll caching and turbo links) were tailored for Basecamp. While scrutinizing the UI of the new version, one can discern the rationale behind these features; however, not every application aligns with this document-centric model. Therefore, take the impressive outcomes from 37signals (including all performance metrics) with caution (e.g., their exceptional caching hardware setup isn't financially feasible for everyone).
Furthermore, keep in mind that projects like Angular and Ember are relatively young and undergoing significant (possibly disruptive) changes, leading to potential frustrations regarding API adjustments.
Also, reflect on your preferred development environment:
Do you lean towards Ruby/server-side development involving TDD, RSpec, and swift feedback loops or debugging within the browser and scripting in JavaScript? Although tools like the Ember Inspector have made noteworthy progress in enhancing the experience, do not underestimate the significance of this aspect, as it will consume much of your time.
Performance Consideration
Similar to DHH's article, remarkable results have been achieved through conventional server-side methods.
Conducting a performance comparison by developing identical applications for both architectures and engaging in testing is ideal yet impractical. Ultimately, the focus should lie on the UI and the perceived speed/performance of your application. If your UI revolves around a single page where users primarily stay focused, the client-side approach may seem more "responsive," compensating for the initial overhead of downloading Javascript files.
API Implementation
Incorporating a robust JSON API into your application presents a compelling argument for adopting the client-side approach. eviltrout noted:
An intriguing benefit of a feature-rich client-side application is establishing a thoroughly tested API. Since our app has consistently interacted with our API since day one, its reliability is validated.
Further Reading/Resources
Noteworthy individuals/projects to follow include:
Ultimately, the decision hinges on the nature of your project. For less critical applications where experimenting with novel technologies and client-side frameworks like Ember and Angular is desired, I would recommend pursuing such options.
This remains a highly discussed subject presently and for the foreseeable future, and I am keen to witness how it unfolds. I hope this provides some insight.