8 ms·
Ask HN: What are real Ruby on Rails alternatives in 2017?
What are the real alternatives to Ruby on Rails in 2017? When I saw “real” I mean, what frameworks offer a wide variety of packages/libraries, common integration with “as-a-service” offerings, and have an opinionated methodology for delivering high level web and API functionality rapidly?
I hear constant refrain “Ruby is dead” so much so that it reminds me of the situation with FreeBSD many years ago.
Admittedly I’m partial to Rails but also love microframeworks too... Sinatra, express, Kemal, iron, etc. but none of those seem to really offer a comprehensive opinionated toolset the way Rails does. There are things that are close but don’t satisfy.
Is there anything close in JS/ES, Kotlin, Rust, Go, Crystal, Scala or Java 8+?
- mtmail 9y agoI found Laravel (PHP) to be almost the equivalent to Rails (Ruby) with https://lumen.laravel.com/ https://lumen.laravel.com/ similar to Sinatra. I've coded, tested, debugging in both extensively. That said I don't consider Ruby declining at all and personally prefer Rails over Laravel (language, ecosystem, packages, day-to-day coding).
- rman666 9y ago+1 for no Rails bandwagon bashing!
- deleted 9y ago[deleted]
- joeldg 9y agoI cannot speak to those languages specifically but I don't like to limit myself against specific langs, that said, for API + high level web functionality "Laravel" is easily the best framework I have found in any language. With Dingo you have out of the box API with caches, queues, jobs, broadcasts etc.
- dudul 9y agoPhoenix in Elixir seems to be really appreciated. The Play framework in Scala is also often mentioned as a very performant tool if latency/throughput/reliability is really what you are after.
- rubyfan 9y agoI’m after productivity ala Rails. Nothing seems to come close for me yet.
- lathiat 9y agoThat's generally the win you got with Rails. Seems that most people moving away from rails are chasing better performance for high scale sites. So if that's not you, rails is probably a good choice. I'll have to take a closer look at this Phoenix stuff though
- dudul 9y agoHave you considered that you feel that Rails is very productive simply because you know it? What you perceive as intrinsic productivity is just you knowing the framework/tool very well.
- rubyfan 9y agoSure enough a valid point. When I didn’t know it I was productive too, circa Rails 0.14.3. I’ve stepped away for programming for many years and skipped mostly through Rails 3 and 4. Recently picked right back up in Rails 5 and just as productive as ever.
- rajangdavis 9y agoHave you considered hacking together your own? Rails is built on top of other components (Thor for command line). I just started hacking together my own and I would say the hardest part (for me) is file generation.
- rubyfan 9y agoThe thing that’s cool about Rails is there’s some common understanding of the Rails way and in theory I can hire easier I have consistency of this working across versions, etc. I know when I start a Rails project I’m a few steps away from business valuable functionality... less so with everything else, there’s like a design and architecture step that comes first. Sometimes/most times I just want to be productive.
- danso 9y agoElixir's Phoenix is where a few former Rails folks have migrated to, so it shares a few of the ideas that made Rails so appealing: https://hackernoon.com/phoenix-is-better-but-rails-is-more-popular-8975d5e68879 https://hackernoon.com/phoenix-is-better-but-rails-is-more-p... A list of companies using Elixir/Phoenix: https://github.com/doomspork/elixir-companies https://github.com/doomspork/elixir-companies Discussion on how Bleacher Report (1.5B pageviews/month) moved from Rails to Phoenix: https://news.ycombinator.com/item?id=13606139 https://news.ycombinator.com/item?id=13606139
- rubyfan 9y agoI used to work at a company in a similar vertical as BR also linked off CNN frequently and also running Rails. I understand the scalability challenges that might lead someone to something like Erlang and Elixir. Curious, what’s your take on why this hasn’t caught on?
- danso 9y agoI've only played around with Phoenix/Elixir so can't claim to have any special knowledge. But I've heard it argued that functional languages/frameworks aren't as common in startups as expected because functional programming isn't as popular among current developers, nor as commonly taught in school. And Erlang seems to be particularly specialized: https://news.ycombinator.com/item?id=7277797 https://news.ycombinator.com/item?id=7277797 Elixir is relatively new (2011), Phoenix even newer. Maybe it's too early to say whether or not it will take off in the same way Rails did? And maybe it won't ever take off because Node/Express brings sufficient performance while allowing developers to use JavaScript, arguably the most popular language in production today.
- jetti 9y agoAs somebody who has been diving into Elixir and Phoenix this year I have to say that the Phoenix way into Elixir isn't as exciting as a backend application written in Elixir in regards to the power of the language and the platform. A lot of Phoenix is hidden and is "magic". You don't need to utilize the OTP at all when using Phoenix and you don't interact directly with what makes Elixir (and Erlang) so special. I started using Phoenix and Elixir and while I liked Elixir's syntax better than other languages I just didn't see what was so great about it. Then I started doing non-web things with Elixir and it became clear how awesome Elixir is. I heard the same thing with Ruby back when I looked at Rails 5 or so years ago. Elixir seems like just another language when you aren't really digging into the OTP.
- amirbehzad 9y agoForget flavor of the month, or 2017 trends. What are you looking for in a web framework in 2017? RoR might serve you well.
- guu 9y agoI think the closest would be Java's Spring Boot: http://projects.spring.io/spring-boot/ http://projects.spring.io/spring-boot/ I think it is easier to find resources to answer rails questions though. In addition, many of the languages you list are very young and their frameworks lack the maturity of something like Rails, Django, Spring, or Laravel. I think it's worth asking, why are you looking to switch? If rails is not a performance barrier for you, then I do not see a good incentive to switch other than wanting to learn something new.
- rubyfan 9y agoSpring doesn’t seem as straightforward to me as I would hope. Play is similar, there is promise there but just too open ended.
- rubyfan 9y agoThe funny thing I see on the springboot quickstart page: Absolutely no code generation and no requirement for XML configuration And the very next thing is a maven xml config.
- ivan_gammel 9y agoIt's not a requirement to use Maven, so their statement is correct even in this extended sense. There's Gradle after all.
- rubyfan 9y agoYes it’s just an ironic presentation.
- AlexAMEEE 9y agoBy no XML, they mean that you don't have to do any configuration in xml files. You can declare everything as a bean. Example: // enabling ETAGS @Bean public Filter etagFilter() { return new ShallowEtagHeaderFilter(); } There is also the option to do many things in a yml file like you are used to from Rails.
- Azuresupport77 9y agoAzuresupport.ml
- Azuresupport77 9y agoAzuresupport.ml
- saluki 9y agoLaravel (PHP) is very Rails like. I love Rails but clients/projects have pushed me toward using Laravel the past few years. It's been a great experience. Lots of great packages, great community, great tools for deployment Forge + Envoyer. Laracasts.com is a great resource to see what it's all about.
- acmecorps 9y agoNooo.. But then I have to use PHP.. I kid, I kid ;)
- saluki 9y agoha . . . this is true. Laravel makes it tolerable though.
- cutler 9y agoYes, if were not for Laravel's Collections I wouldn't touch it. The biggest barrier for me with PHP is the idiomatic PSR-driven abuse of blank lines, a la Kernigen and Ritchie, coupled with code hidden in doc-comments. You're lucky to find more than 5 lines of code visible on a screen when surrounded by this code style monstrosity.
- bo77_avantgarde 9y agoI have not looked into Elixir Phoenix but have been hearing some noise about it recently. Folks also frequently compare Rails to Django (Python) ... my 2 cents is Rails has a lot of good tools to build web apps fast and underneath it all provides a lot of strong functionality. Most things are relative though to the specific "thing" you're building so I can not say Rails is the best framework without knowing xyz, but for most web applications I'd stick with Rails. You get a lot that often gets taken for granted. Nowadays it seems folks take 1 month bootcamps and come out thinking they know everything and are so quick to try the next framework. I think that bad implementations, lack of expertise, and biased opinions has hurt the public opinion on Rails. Ultimately Rails enables you to quickly build and figure things out. Once your business is set in stone, the data model is consistent, and you're no longer figuring it out you can switch focus outside of something like Rails and break your system up into solid super fast micro-services. It's just my biased opinion since Rails is "easy" for me. Perhaps Elixir or Django are just as nice, but ultimately I guess it boils down to the developers themselves, the mentorship, the team etc. Ruby isn't dead but if in 2017 developers are banking on 1 language or framework then good luck. Full-Stack problem solvers is becoming a norm now. Just figure out how to become a strong developer in general and care less about frameworks that most people / companies abuse and implement incorrectly all the time. Sorry for the rant but God Damn this Ruby is dead buzz is so annoying, irrelevant, and usually backed by people using it incorrectly in the first place.
- rubyfan 9y agoGreat rant. In a way my question is a challenge the Rails is dead noise. Maybe I’m an old dog but the stuff I see lately misses the mark. Developers seem to spend a lot of time thinking about how they’re going to run their microservices before any functionality is built... there’s something wasteful there. Rails just works and seems to be faster to solution than any of the piecemeal approaches I see in the microframework world.
- quickthrower2 9y ago.net core. With Asp.net MVC.
- 2_listerine_pls 9y agoIs it dependent on Azure or Windows-only tools?
- bdcravens 9y agoNope: https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction https://docs.microsoft.com/en-us/aspnet/core/publishing/linu...
- tonyedgecombe 9y agoNo, it's equally unfinished on all platforms. Hopefully 2.0 will be better.
- jmkni 9y agoNot at all, it's completely open source, you can use any text editor you like, and develop on Windows/Mac OS/Linux.
- guitarbill 9y agoI know you didn't list Python, but Django works very well. Bit of a learning curve though. Flask is a microframework (also Python), with emphasis on the micro. Django makes some trade-offs that might make it seem like you're less productive. Maybe it's true, but Django apps are very maintainable in my experience.
- ajitid 9y agoJust started with Django, I am praying noone comes to me tomorrow and say "Django is dying", atleast not for now.
- halfnibble 9y agoIf someone ever says that to me, I'll still keep using it to the day I die. And I'll maintain it if need be. Because Django is awesome.
- 1ba9115454 9y agoAt the moment nothing comes close. Theres are lots of 'Me Too' frameworks but they don't give enough extra benefit to make it worth switching. In the future we might see something coming out of Rust, there's a nice HTML template api which is typesafe and an ORM called diesel which is also type safe and could give ActiveRecord a run for its money.
- sandGorgon 9y agoMigrations, asset pipeline, debugger, package management. I haven't seen anything that has all of these built in.
- neilwilson 9y agoI think it is more 'Ruby isn't sexy any more' because people older than 25 use it. It's just the usual thing of the next generation not wanting to listen to the music the previous generation did. These things come in cycles. I remember when 'Hot Java' was sexy and cool and only throwbacks wrote C. (And when C was sexy and cool and only throwbacks wrote COBOL, etc) There were lots of other languages and frameworks around at the time too that have long since been consigned to the history books. I never thought fashion would be a factor in IT engineering, but you realise over time that the two things you cannot escape are fashion and politics. They are fundamentally part of the human condition. If you want long lasting skills in the IT industry make sure you're good at fashion and politics. They'll take you all the way to a comfortable retirement.
- o2l 9y agoThat's a very good insight.
- f00_ 9y agoPHP: Laravel, Lumens Python: Django, Flask, Pyramids, Tornado Java: Spring Scala: Akka? most experience with Python
- BilalBudhani 9y agoI was pondering over the same question some time back which lead me into experimenting with frameworks in NodeJS and oh boy, I missed Ruby On Rails on every single line I wrote in those other frameworks. I whole heartedly regret looking into other frameworks just because I felt Ruby On Rails isn't sexy anymore. This experience made me double sure on why Ruby On Rails is one of the strongest & productive frameworks available. My advice is, don't look anywhere else if you're not facing any problem with your current stack.
- jfaucett 9y agoI'm a long time ruby developer and have switched to erlang/elixir now for about 2 years now. IMHO phoenix is at least as good as rails, personally I think its most often a better option when building large applications, though this is due mainly to elixir/erlang and OTP. Elixir offers production grade options for all the major packages/libs you need and all the packages I've had to build have been the same kinds of minor things like api clients or whatever that I had to build a gem for when I was using ruby. So phoenix/elixir is certainly a "real alternative" since I've been building production systems in it for 2 years. lastly Phoenix is not quite as opinionated as rails, but its still very opinionated and any rails developer will feel very much at home there.
- LordHeini 9y agoI quite like Lift which is a Scala framework allowing stupidly fast rapid prototyping (rails is really slow and clunky in comparison) . There are no routes and all the Javascript stuff is built in (so no annoying manual Ajaxcalls). It is multithreaded via Aktors and has build in comet for async stuff which is almost trivial to use. The example for using the framework a life webchat which is a handful of files with a few lines code each. On top the HTML is, well... proper HTML. No scull operators or such thing. The framework attaches functionality via css selectors in so called snippets which are like small controllers but not for an individual view but more for a specific functionality which helps with reusability. On top you get all the cool thing from scala like option types, static typing with type inference, the speed, multithreading and so on. The biggest downside is the rather awful documentation (often outdated) and the missing migrations. I found it quite a step to lean since it is not an mvc framework and inherently stateful. There are a few free books however.
- neverminder 9y agoPlay Framework - supports both Scala and Java. It was inspired by RoR to be a lightweight alternative to such legacy behemoths like Spring. It's a full featured web framework based on Akka, scalable out of the box. Combination of Play/Scala/Slick gives you compile time safety for database queries - very few alternatives can offer that. Also, strict types significantly reduces your test coverage which is not possible on any dynamic languages.
- ivan_gammel 9y agoThe comparison with Spring does not make any sense, because Play and Spring have different scope. Play is just a web layer, Spring is modular general purpose framework, compatible with different web layer implementations. If you want to compare "lightweight alternative to legacy behemoth", take the full feature stack (and mention all other additional libraries you'll need for Play to match the functionality). I doubt there will be significant difference.
- olavgg 9y agoGrails Framewok! http://grails.org http://grails.org Built on top of Spring Boot. Awesome performance, both in execution and development speed. Convention over configuration. But it is still easy to access the rich Java libraries. Comes with GORM, an ORM layer on top of Hibernate. Makes it work a lot more like Active Record with dynamic finders. Groovy, very similar to Java. Metaprogramming, easier JDBC, execellent, makes it very easy to work with JSON. Groovy also has performance close to Java. Java and Groovy can access each other as they have similar byte code. Very few breaking changes from release 0.4 to 3.3. You can expect that most of your code will work without needing a rewrite the next 10-20 years. Superb HTTP parameter binding and validation with Command Objects. It is a very mature framework and you have full access to Spring Framework. Great community!
- peller 9y agoI inherited a Grails 2 codebase about 8 months ago. I'd never worked with Java or Spring before, but I have pretty extensive experience with Django, Flask and Symfony (inspired by Spring, as I understand it). Anyway, from my perspective, I'm sorry to say I have to strongly disagree with all of these points - I've never had a more miserable experience with a framework. <rant> First off, I found the documentation to be really bad. All of it assumes you're already deeply familiar with Spring/Hibernate, and it offers zero direction for those who aren't. Furthermore, Grails has a ton of magic. Which I guess could be OK, but again, it's all very poorly documented - and trying to read the source code of Grails itself to get a grasp on what's going on? Forget it. Development speed? Hot code reloading pretty much doesn't work; any time I add or change a route, or a JSON marshaller (aka a serializer in every other framework known to mankind[0]), or simply add a JS file, you have to restart the dev server. Which, to top it off, spins up insanely slow compared to a proper dynamic language. GORM. Same documentation rant. They cover the simple cases and leave you in the dark if you need to do anything more complex than a join. Luckily people on SO are helpful here, but I wish I could understand what the hell is going on behind the scenes. Plugin ecosystem? Seems pretty small/inactive, especially compared to Django. Oh, and each time you install a plugin, expect at least another 30 seconds to spin up the development server. Breaking changes? The recommended upgrade path from 2 to 3 is "start a new project and copy over your files." WTF? The parameter binding/validation does work pretty well, as long as you don't try and do anything non-straightforward. But step outside the box, and it falls apart. And again, the documentation of these magical transformations is utter shit. Related: no default arguments allowed for controller parameters? Really guys? [0] This whole "let's make up a new name for some already widely established concept/function" appears especially rampant in Groovy/Grails. Not a fan. </rant> Perhaps coming from the perspective of JavaLand it's an upgrade, but man, this shit is not for me. Sorry for the rant.
- marcus_holmes 9y agoFriends don't let friends use frameworks http://www.catonmat.net/blog/frameworks-dont-make-sense/ http://www.catonmat.net/blog/frameworks-dont-make-sense/
- marcus_holmes 9y agofair enough, I'll take the downvote because it was a bit trolly. But it's a serious point. Frameworks are not helpful in the long term. Go has no commonly-accepted web framework because the idiomatic solution is to use the standard library and write just the code you need. Instead of importing a tonne of code (and assumptions about your project) that you don't need. A framework will help you get something up quickly. But as the project continues it will get in your way, more and more. I've seen it so many times.
- afarrell 9y agoAt GoCardless, we've replaced ActionController with Coach for request handling while still using the rest of the rails toolset: https://github.com/gocardless/coach https://github.com/gocardless/coach It has worked really well for us over the past few years.
- cutler 9y agoFor the size of website Rails is optimised for nothing matches Rails IF you're considering all dimensions rather than just performance. That's because Rails capitalises on the unique design of the Ruby language. Ruby manages to blend OO, procedural and functional, taking the best features of Perl, Smalltalk and Lisp. The result is perfect for creating the kind of DSLs Rails is built on. Clojure and Elixir come close but they're strictly functional languages. Scala claims to excel in blending OO and functional but the result is a mess which has fragmented the Scala community whereas the Ruby community speaks with one voice.