←back to thread

140 points ksec | 4 comments | | HN request time: 0s | source
Show context
hboon ◴[] No.41085655[source]
I'm aware of the limitations of a dynamic language in terms of the looking up references and implementations of types/functions.

For everyone commenting about those and who haven't, I suggest trying RubyMine to set expectations on what is possible first.

replies(1): >>41085794 #
simoncion ◴[] No.41085794[source]
> I suggest trying RubyMine to set expectations on what is possible first.

In my professional experience with large, very long-running Ruby projects, RubyMine will at least once per session (and usually much more than once) give you search results that are no better (and sometimes worse) than if you'd just run `grep` on the codebase. (e.g. "I'm pretty sure ONE of these five hundred 'run' functions is the one you want! Oh, by the way, I also am showing you results from every .gem file I know about!")

It also has a bias for presenting results quickly and allowing you to make queries quickly... so quickly that it often returns partial results to queries with absolutely no outward indication that the results are incomplete.

Given what it seems that the other Ruby "Intellisense" plugins are having to do to well-understand real-world Ruby projects (especially those who use Rails and friends), I'm sure that a godawful lot of manual work and special-case knowledge has gone into RubyMine's Intellisense. But, it's still not nearly enough to be reliable on large projects.

replies(1): >>41085834 #
1. hboon ◴[] No.41085834[source]
I thought they have a little indicator that says it's a partial result set?

> I'm pretty sure ONE of these five hundred 'run' functions

Yes. Same thing with all unannotated dynamic languages. Like Smalltalk has a bazillion `#value` and `#value:`s, but there were options to scope it down. You can do that in RubyMine, but I forgot if you can do it by class/gems without manually creating a scope.

Just saying that such navigation isn't impossible with Ruby.

replies(1): >>41085901 #
2. simoncion ◴[] No.41085901[source]
> I thought they have a little indicator that says it's a partial result set?

There might be one (one would think there WOULD be one), but if it does exist, it's so small and unobtrusive that I've never noticed it. My coworkers who use RubyMine every damn day don't seem to notice it either. If it exists, it needs to get much more obvious, IMO.

> ...but I forgot if you can do it by class/gems without manually creating a scope.

I know that my RubyMine-loving coworkers definitely don't do whatever this is and just power through the worse-than-grep results.

> Just saying that such navigation isn't impossible with Ruby.

Fully-automatic trouble-free navigation of sufficiently-large/complex projects is pretty much impossible with Ruby. (At least in a Ruby project that lacks comprehensive, correct type annotations.) I'm just saying that folks who might take RubyMine for a test drive on a small or toy project will be unlikely to get an accurate demonstration of its limitations.

(In my professional experience, RubyMine is not THAT much better than the 'solargraph' VSCode plugin.)

replies(1): >>41085959 #
3. hboon ◴[] No.41085959[source]
> but I forgot if you can do it by class/gems without manually creating a scope.

You can choose and edit scopes with these 2 buttons — https://imgur.com/a/jZute6v

replies(1): >>41086042 #
4. simoncion ◴[] No.41086042{3}[source]
Ah! I've definitely seen my coworkers use that dialog, so I fully expect that they're aware of (and use) that button.