This is in response to Why Meteor will kill Ruby on Rails. A pretty big claim, for sure. Now, Meteor is worth checking out, but Josh didn’t name any of the reasons why I and a whole lot of others choose Rails. So here we go.
It was its built-in support for these got me interested:
- CRUD (Create / Retrieve / Update / Delete) database web apps. This is its sweet spot.
- XML & JSON web access.
- Object-oriented, unified access to all databases, relational or not. No more SQL necessary.
- Seemingly all the best software engineering practices:
- Separate environments for test, development, and production. Easy to create new ones (i.e., “staging”.)
- Test-Driven Development
- DB schema migrations
- Separation of content from presentation
- Database independence
- Based on an OO language (Ruby) created through experience with the strengths & weaknesses of Perl, Python, PHP, & Smalltalk.
- A well run system of add-in modules and dependencies (bundler & gems) that provide all the extras a web app usually needs: paging over results, backgrounded queues, authentication, HTML parsing, payment gateways, etc.
- Unicode support.
- A huge amount of documentation and community.
…and then its convention-over-configuration kept me hooked.
It’s like Rails has taken the best practices we’ve learned about building good software, and made them the default. And Django is on the same path. Josh credits Rails’ popularity on convention-over-configuration. That’s definitely helped. Meteor looks very interesting, but until it supports more of the above, we’re talking apples and oranges.
I played with Meteor to create a todo app and then did the same in Rails. Rails is so much more structured. Meteor felt like the early days of PHP with a lot of rope to hang oneself. In the end it took a little longer to develop the rails version of the todo app but I wont be giving it up for a long time. Meteor is a long way behind but I think the Rails views/controllers scaffold should have an option to generate ajax.
I’m the front end dev on a mostly Rails dev team and I’ve been playing with Meteor for a couple months now. I’ve created 3 apps solo that are lightning fast, scalable, persistent, organized, and not to mention in a fraction of the time it takes an entire Rails team to create a Rails app. I’m not saying that it will destroy Rails (because I honestly don’t know too much about Rails to say) but Meteor is amazing for front end devs like me that enjoy the JS/HTML/CSS stack. The ability to create an entire web app with those alone is mind blowing to me. It has come so far in the last year, I can’t imagine how it will be in another year.
That being said, I see no reason why Rails and Meteor can’t coexist. They both have their pros and cons just like any framework/language. For example, I was able to create a demo app for our sales team to present to clients that pretty much works the same way as our real app, without having to take resources away from actual development. We also use it for prototyping since it’s extremely fast and easy to change.
It sounds to me that Meteor is good for creating all the bells and whistles and glittering lights that project managers and other non-tech people like to see. Yes, you can create the flashing lights, etc.
But when it comes to the real world requirements of sophisticated apps, security, and what not, I would NOT want to place everything front-end like Meteors seems to encourage.
Also, everything is shifting to mobile apps now. Sticking all your logic in Meteor will be a wash here, unless you intend to run your Meteor app in the browsers of smart phones. Yes, you can do that too, but does not sound like a good way to approach a serious world-class mobile application.
I have not had a chance to play with Meteor myself, so I might be missing on a few points here. It sound like, though, Meteor and Rails might complement each other nicely.
I am not seeing Meteor replacing Rails at all, anymore than PHP or .net replaced Java. Java, as cumbersome as it is, is still around. Not my choice for web applications, but it remains in widespread use.
I do see Rails encroaching on the .net terrority. But as much as I love Rails, I know .net will be able to hold its own against it — for a little while at least.
I just dare anyone to implement credit card transactions completely in Meteor. Yeah, just go right ahead. The results will be amusing.