I haven't heard much in the way of web framework discussion as of late.<p>If you're starting off on a new project, what does your stack look like? Is Rails your go to framework, or is node.js more appealing?
If you are choosing a technology stack based on "Whats Hot" rather then "What provides the best solution for my team and my problem" then it doesn't matter what you choose, as it will probably be wrong.<p>Is your team heavy with javascript developers? Do you have a need for an event-driven framework that can handle large load? Great, here comes node.<p>Is speed of development and a wealth of 3rd party libraries for almost any need critical to your ability to get started? Well, RoR has you covered.<p>Every language has strengths and weaknesses. Picking a tech stack is a decision that should be based on your needs.
Node.js is not a framework for developing web applications. Express.js is a framework for developing web applications on the Node.js platform. As per the question, I tend to go towards Node with Express. It doesn't do all the abstractions in terms of controllers and associations in models, though - so development is not as quick for trivial apps.<p>One reason I choose Node over Ruby/Rails is the Websocket libraries available in Node. Here's an example of why: I've been exploring a lot of JavaScript lately. Backbone.js is nice, but it doesn't have nice data-binding. Angular.js is really nice, but it's "templates" (directives) cannot be parsed by a server, so you couldn't serve the same content from the server. Ember is nice, but it's a little slow compared to the other frameworks (from my experience with it, I know it will improve).<p>I prefer Backbone + Handlebars because I can serve the same templates as views from the server if I adhere to a rule that essentially means each page of the app is a separate Backbone template associated with it's own view. These can still have subviews, but the client will handle that. The only thing I don't like is the data binding.<p>So, lately in my apps, I've found myself writing simple data binding "plugins". But instead of detecting regular events - I bring socket.io into the mix. This makes for really fast data binding, plus everyone can see the changes.<p>Having everything in JavaScript prevents me from straying between different programming languages and distracts me less, and for the socket work it just makes so much more sense to me.
Check recent blog post from Jeff Atwood. He explicitly mentions that he chose ruby because it has become boring, and this is a good thing !<p><a href="http://www.codinghorror.com/blog/2013/03/why-ruby.html" rel="nofollow">http://www.codinghorror.com/blog/2013/03/why-ruby.html</a>