@@ -11,7 +11,7 @@ import { pickExtensionPack } from "./extension-pack-picker";
1111import { showAndLogErrorMessage } from "../common/logging" ;
1212import { dir } from "tmp-promise" ;
1313
14- import { isQueryLanguage } from "../common/query-language" ;
14+ import { isQueryLanguage , QueryLanguage } from "../common/query-language" ;
1515import { DisposableObject } from "../common/disposable-object" ;
1616import { MethodsUsagePanel } from "./methods-usage/methods-usage-panel" ;
1717import { Method , Usage } from "./method" ;
@@ -23,7 +23,7 @@ import { ModelEditorViewTracker } from "./model-editor-view-tracker";
2323import { ModelConfigListener } from "../config" ;
2424import { ModelingEvents } from "./modeling-events" ;
2525
26- const SUPPORTED_LANGUAGES : string [ ] = [ "java" , "csharp" , "ruby" ] ;
26+ const SUPPORTED_LANGUAGES : string [ ] = [ "java" , "csharp" ] ;
2727
2828export class ModelEditorModule extends DisposableObject {
2929 private readonly queryStorageDir : string ;
@@ -32,6 +32,7 @@ export class ModelEditorModule extends DisposableObject {
3232 private readonly editorViewTracker : ModelEditorViewTracker < ModelEditorView > ;
3333 private readonly methodsUsagePanel : MethodsUsagePanel ;
3434 private readonly methodModelingPanel : MethodModelingPanel ;
35+ private readonly modelConfig : ModelConfigListener ;
3536
3637 private constructor (
3738 private readonly app : App ,
@@ -56,6 +57,7 @@ export class ModelEditorModule extends DisposableObject {
5657 this . editorViewTracker ,
5758 ) ,
5859 ) ;
60+ this . modelConfig = this . push ( new ModelConfigListener ( ) ) ;
5961
6062 this . registerToModelingEvents ( ) ;
6163 }
@@ -125,10 +127,13 @@ export class ModelEditorModule extends DisposableObject {
125127 }
126128
127129 const language = db . language ;
128- if (
129- ! SUPPORTED_LANGUAGES . includes ( language ) ||
130- ! isQueryLanguage ( language )
131- ) {
130+
131+ // Ruby is only enabled when the config setting is set
132+ const isSupportedLanguage =
133+ SUPPORTED_LANGUAGES . includes ( language ) ||
134+ ( language === QueryLanguage . Ruby && this . modelConfig . enableRuby ) ;
135+
136+ if ( ! isSupportedLanguage || ! isQueryLanguage ( language ) ) {
132137 void showAndLogErrorMessage (
133138 this . app . logger ,
134139 `The CodeQL Model Editor is not supported for ${ language } databases.` ,
@@ -167,12 +172,10 @@ export class ModelEditorModule extends DisposableObject {
167172 return ;
168173 }
169174
170- const modelConfig = this . push ( new ModelConfigListener ( ) ) ;
171-
172175 const modelFile = await pickExtensionPack (
173176 this . cliServer ,
174177 db ,
175- modelConfig ,
178+ this . modelConfig ,
176179 this . app . logger ,
177180 progress ,
178181 maxStep ,
@@ -196,7 +199,7 @@ export class ModelEditorModule extends DisposableObject {
196199 this . cliServer ,
197200 queryDir ,
198201 language ,
199- modelConfig ,
202+ this . modelConfig ,
200203 ) ;
201204 if ( ! success ) {
202205 await cleanupQueryDir ( ) ;
@@ -225,7 +228,7 @@ export class ModelEditorModule extends DisposableObject {
225228 this . modelingStore ,
226229 this . modelingEvents ,
227230 this . editorViewTracker ,
228- modelConfig ,
231+ this . modelConfig ,
229232 this . databaseManager ,
230233 this . cliServer ,
231234 this . queryRunner ,
0 commit comments