@@ -40,23 +40,20 @@ interface ManagerClass {
4040 manuallySelectRuby : ( ) => Promise < void > ,
4141 ...args : any [ ]
4242 ) : VersionManager ;
43- detect ?: (
44- workspaceFolder : vscode . WorkspaceFolder ,
45- outputChannel : WorkspaceChannel ,
46- ) => Promise < vscode . Uri | undefined > ;
43+ detect : ( workspaceFolder : vscode . WorkspaceFolder , outputChannel : WorkspaceChannel ) => Promise < vscode . Uri | undefined > ;
4744}
4845
4946const VERSION_MANAGERS : Record < ManagerIdentifier , ManagerClass > = {
47+ [ ManagerIdentifier . Shadowenv ] : Shadowenv ,
5048 [ ManagerIdentifier . Asdf ] : Asdf ,
51- [ ManagerIdentifier . Auto ] : None , // Auto is handled specially
5249 [ ManagerIdentifier . Chruby ] : Chruby ,
5350 [ ManagerIdentifier . Rbenv ] : Rbenv ,
5451 [ ManagerIdentifier . Rvm ] : Rvm ,
55- [ ManagerIdentifier . Shadowenv ] : Shadowenv ,
5652 [ ManagerIdentifier . Mise ] : Mise ,
5753 [ ManagerIdentifier . RubyInstaller ] : RubyInstaller ,
58- [ ManagerIdentifier . None ] : None ,
5954 [ ManagerIdentifier . Custom ] : Custom ,
55+ [ ManagerIdentifier . Auto ] : None , // Auto is handled specially
56+ [ ManagerIdentifier . None ] : None , // None is last as the fallback
6057} ;
6158
6259export class Ruby implements RubyInterface {
@@ -319,16 +316,19 @@ export class Ruby implements RubyInterface {
319316 }
320317
321318 private async discoverVersionManager ( ) {
322- // Check managers that have a detect() method
323- for ( const [ identifier , ManagerClass ] of Object . entries ( VERSION_MANAGERS ) ) {
324- if ( ManagerClass . detect && ( await ManagerClass . detect ( this . workspaceFolder , this . outputChannel ) ) ) {
325- this . versionManager = identifier as ManagerIdentifier ;
319+ // Check all managers for detection
320+ const entries = Object . entries ( VERSION_MANAGERS ) as [ ManagerIdentifier , ManagerClass ] [ ] ;
321+
322+ for ( const [ identifier , ManagerClass ] of entries ) {
323+ if ( identifier === ManagerIdentifier . Auto ) {
324+ continue ;
325+ }
326+
327+ if ( await ManagerClass . detect ( this . workspaceFolder , this . outputChannel ) ) {
328+ this . versionManager = identifier ;
326329 return ;
327330 }
328331 }
329-
330- // If we can't find a version manager, just return None
331- this . versionManager = ManagerIdentifier . None ;
332332 }
333333
334334 private async handleRubyError ( message : string ) {
0 commit comments