This is the reason why I have to keep IntelliJ Idea Ultimate/RubyMine laying around.
I don't have the greatest laptop, and run a lot of containers, so Jetbrains IDE's are generally a no-go for me and I stick to VS Code, but trying to develop Ruby/Rails without a Jetbrains IDE Is crippling.
I think ctrl+click definition jump does work in Crystal and it has a decent language server.
That's good to keep in mind, I strictly write code in vim but if I have to pick up ruby again I'll give those IDEs a shot.
I really like the sales pitch of rails, but as someone that almost exclusively writes in modern, compiled languages, it's really tough to adjust to ruby and be productive with it.
I wrote Rails professionally for a few years back when that was THE de-facto tech for greenfield projects and new startups.
At the time, I really enjoyed it, but I'd never written a modern-feeling typed/gradually typed language yet (C#, which I found really verbose and ugly, a lot of pre-ES6 JS and Ruby, some Lua + Python).
I would never voluntarily write it again. Ruby/Rails completely falls apart in larger projects if the entire team doesn't stick to best practices + stringent code and doc standards with stuff like YARD or Sorbet. And so many magic, implicit methods injected everywhere.
Super happy writing Typescript and occasional Rust/Go now. I thought Kotlin was pretty nice too, the one small project I had to implement in it.
Another issue with writing rails is the "bug in production that would've been caught at compile" issue lots of people have. There's been multiple instances early in my career when I missed a nil guard somewhere that broke months later because someone else used the method and sent it a nil. Types are super useful because they also work as on-demand accessible documentation, and the compiler helps you figure out well in advance when you're sending an invalid input etc.
I mean, the answer is just, more tests. If you choose a dynamic language over a compiled one, then you've in essence chosen to eliminate type definitions in code and replace them with type verifications in tests. Of course, if you switch to a typed language that doesn't have nil types, that doesn't help...
When you have +100,000 LOC written over many years by people with varying degrees of experience and familiarity with the language, Ruby/Rails becomes unmanageably difficult a lot faster than other languages. It isn't the only one though.
Not that you can't have a great, large Rails codebase but the "guardrails" are a lot less present than in some languages and it can be harder to try to clean up the mess once it's happened.
Hmmm well in the current fad of breaking out everything into a "micro" service how often do you deal with 100K LOCs? Also, typed code will reach 100K locs way faster than dynamic.
I don't have the greatest laptop, and run a lot of containers, so Jetbrains IDE's are generally a no-go for me and I stick to VS Code, but trying to develop Ruby/Rails without a Jetbrains IDE Is crippling.
I think ctrl+click definition jump does work in Crystal and it has a decent language server.