There are two things to bear in mind about IntelliSense.
1) When code is not valid (that is, if it can't be run by Ruby) the IntelliSense system cannot analyze it. So if, for example, there is a syntax error (even a trailing dot that's been left lying around after an object name) you will need to fix that for the IntelliSense analyzer to do its job.
2) Due to the dynamic nature of Ruby, we have to analyze an awful lot of code for every single editing change. This is because even something as simple as the addition of a 'free-standing' method gets bound into the base Object in Ruby and, if it's public, this needs to percolate through to all other classes. To see what I mean, try this (make sure Object methods are displayed - Tools, Options, Text Editor, Ruby, IntelliSense, Display Object methods
a = Array.new
After a. you should see the aaa method in the completion list (this is correct in Ruby). To analyze changes correctly, then, the IntelliSense system frequently has to reanalyze the entire class library. This is not, therefore, as fast as with a statically typed language such as C# in which the IntelliSense system never has to worry about complicated 'side effects' of this sort. We've made it reasonably fast, I think, and we are working on ways to make it even faster. But there may, even so, be times when the IntelliSense database is not fully up to date - especially if you are a fast typer or have a slow PC. If you suspect that the IntelliSense is not up to date you can force a reparse of the IntelliSense database by selecting Compile (press Ctrl+F7).
If, on the other hand, you find that this is a repeatable problem which may be due to some other factor, please send us a complete working example of the code and we'll take a closer look at it.