7 ms·
I've had to deal with Ruby for the last 2 years, and one of the main problem is the gem ecosystem. The language and standard libraries are pretty narrow, unless
by drchopchop 6y ago
I've had to deal with Ruby for the last 2 years, and one of the main problem is the gem ecosystem. The language and standard libraries are pretty narrow, unless you add Rails (which adds a new variety of breaking upgrade headaches).
Thus, there's always the desire to use third-party gems to achieve pretty basic stuff (localization, decent networking/REST, database drivers, etc). These then tend to go out of date. It's pretty common to find well-used gems that haven't been updated in 5, even 10 years. This puts the developer in a tough spot - reinvent the gem/wheel? Or be forced to stay on an EOL version of Ruby?
- jaynetics 6y ago> The language and standard libraries are pretty narrow Compared to which other language?
- drchopchop 6y ago> Compared to which other language? Java, for one, but obviously it's subjective
- jtth 6y agoYou can use JRuby and then have access to both library ecosystems.
- vidugavia 6y agoNot JavaScript or Go, that's do sure...
- cageface 6y agoThis is because the next generation of hot coders is working on JS or something more exotic like Rust. This is why I think that even though Rails is still a good platform for building a certain class of webapps the writing is on the wall and I'm planning to transition away from it over the next few years.
- thekingofh 6y agoIn 5 years there'll be another shiny thing everyone will flock to. It's part of the fun, but there are some languages that just do that particular thing just right. Ruby/Rails is bittersweet to me. It does that thing just so right, but it feels like there's an evolution around the corner that could be an upgrade when it comes to the ecosystem. It certainly doesn't feel like Rust is a good replacement if you enjoy Ruby syntax and dynamic typing simplicity. Ruby reminds me a lot of how Perl 5 is a great language, yet finding jobs in Perl 5 is becoming more and more difficult. I'd love to think that Raku (formerly Perl 6) would be that language, but it doesn't seem like the trajectory is there.
- cageface 6y agoJust because something is new and shiny doesn't mean it's not a step forward. People dismissed Rails with these same criticisms in the beginning. Sometimes new tech gives us a big step up in productivity and I think we can now do better than Ruby/PHP/Python.
- jaredcwhite 6y agoOr you could become an open source contributor and improve the ecosystem by submitting PRs to existing gems or writing your own. The community is us. Ruby is what we make it. So let's make it better.
- cageface 6y agoRails has been very good to me over the years so I am tempted to try to help out but I think if I'm going to volunteer I'd prefer to help a more modern stack like KTOR.
- nicoburns 6y agoConsider Laravel (PHP) and Django (Python) if you want a like-for-like replacement in a better supported ecosystem.
- 6y ago
- the8472 6y agoDoes the dependency manager not enable fork + override dependency?
- drchopchop 6y agoYes, but you can easily get in a situation where say Github says "gem X is vulnerable, upgrade it", but can't generate it needs to update version of dependent gem Y, and that would break gem Z which is version locked because ruby versions etc...
- lostapathy 6y agoThis happens, but it's not really that common, and it's certainly not insurmountable. You can fork any gem in github, fix whatever issue it has, and point your Gemfile at your fork on github. Bundler treats it as the same package so it doesn't break your dependency tree either above or below it. I've used this to fix an incompatibility in the middle of my dep tree before. It's annoying, but it's not exactly a big deal.
- Trasmatta 6y agoRuby is generally very backwards compatible, so I rarely run into an issue where an old gem requires that I run an old Ruby version.
- rubiquity 6y agoA lot of gems don’t need to be updated. Stable software is a thing, especially in more mature ecosystems such as Ruby.
- joshmn 6y agoI haven't had your same problem and I've been working with Ruby for the last 8 years. I've also deployed Go, Python, Elixir, and Javascript to production. Here are my thoughts on Ruby in 2020: Ruby, between versions, doesn't have many breaking changes, if any. They're more additive changes than they are subtractive. That obscure gem that has a last commit date of 2 years ago? Probably still works. Bundler complaining the Ruby version isn't supported in the gemspec? Fork, edit, push, bundle, success. When you say basic stuff, I think of "busy work that's already solved by someone else, probably in a more complete than my half-assed attempt would be just so I can focus on more domain-specific problems and implement business logic." That's a fine tradeoff. My clients don't pay me to implement things like authentication or design an ORM: They pay me to do business logic. `bundle add devise; rails g devise:install; rails g devise User; rake db:migrate` gets me rock-solid authentication and I didn't have to think twice about it. "Look at all the things I'm not doing" was something DHH said when he released Rails. A lot of Ruby is the same way. That's fine with me, and a lot of others. There's a lot to love with Ruby in 2020. I still find it to be the most hyper-productive ecosystem and it doesn't change daily (see: Javascript's ecosystem). It's a language that's expressive, enjoyable, and plain fun. And for the very vast majority of web applications — which are CRUD-centric — Rails is still an extremely valuable means to get up and running. Scale? 99% of us won't need to worry about scale, and when we do, that's a great problem. Speed? For 99% of us, our database will be the slowest part of our application — even when indexed and tuned. Sure, it may not be 2020 sexy. The socks you're wearing probably aren't either, but they still get the job done.
- jaredcwhite 6y agoRuby is plenty sexy to me! Been working in a large "modern" Typescript codebase for about a year now, and every chance I get to go back to writing Ruby, it's a breath of fresh air!
- mostlysimilar 6y agoRuby is a joy and I'm always a little confused by it getting so much negativity on internet forums. I guess we all have our preferences, but the Ruby ecosystem feels sane and stable to me.
- dragonwriter 6y ago> The language and standard libraries are pretty narrow, unless you add Rails Rails is neither the language nor the standard library, so the “unless” part seems superfluous. > These then tend to go out of date. It's pretty common to find well-used gems that haven't been updated in 5, even 10 years. This puts the developer in a tough spot - reinvent the gem/wheel? If it's open source, why would reinvention rather than forking and assuming maintenance (for one's own needs, not necessarily publicly) be an issue?
- vidugavia 6y agoRuby is super backwards-compatible with new versions. Even to much. The core team almost made religion from it. So I don't really understand what the problem is - aside from using not maintained library. It will work, unless it was written for 1.8 or something.
- YorickPeterse 6y agoJust because something hasn't been updated for a while doesn't mean it's broken.