@@ -57,26 +57,42 @@ def start
57
57
58
58
def execute ( request , params )
59
59
if request . include? ( "." )
60
- addon , command = request . split ( "." )
61
-
62
- unless addon . present? && command . present?
63
- return { error : "Invalid request format: #{ request } " }
64
- end
65
-
66
- # TODO: handle invalid input
67
- @addons [ addon . to_sym ] ||= self . class . require_server_addon ( addon )
68
- File . open ( "ruby-lsp-rails.txt" , "a" ) do |f |
69
- $stdout = f
70
- $stderr = f
71
- addon = @addons [ addon . to_sym ]
72
- # TODO: why didn't I see an error when 'dsl' was typoed?
73
- addon . send ( command , params )
74
- rescue => e
75
- $stderr. puts "*** rescued Error: #{ e . full_message ( highlight : false ) } "
76
- end
77
- return VOID
60
+ execute_for_addon ( request , params )
61
+ else
62
+ execute_for_ruby_lsp_rails ( request , params )
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def execute_for_addon ( request , params )
69
+ addon , command = request . split ( "." )
70
+
71
+ unless addon . present? && command . present?
72
+ return { error : "Invalid request format: #{ request } " }
73
+ end
74
+
75
+ begin
76
+ @addons [ addon . to_sym ] ||= self . class . require_server_addon ( addon ) . new
77
+ rescue InvalidAddonError
78
+ return { error : "222 Loading addon '#{ addon } ' failed" }
78
79
end
79
80
81
+ # TODO: Verify error is seen
82
+ unless @addons [ addon . to_sym ]
83
+ return { error : "Loading addon '#{ addon } ' failed" }
84
+ end
85
+
86
+ File . open ( "ruby-lsp-rails.txt" , "a" ) do |f |
87
+ addon = @addons [ addon . to_sym ]
88
+ # TODO: why didn't I see an error when 'dsl' was typoed?
89
+
90
+ addon . send ( command , params )
91
+ end
92
+ VOID
93
+ end
94
+
95
+ def execute_for_ruby_lsp_rails ( request , params )
80
96
case request
81
97
when "shutdown"
82
98
@running = false
@@ -99,8 +115,6 @@ def execute(request, params)
99
115
{ error : e . full_message ( highlight : false ) }
100
116
end
101
117
102
- private
103
-
104
118
def resolve_route_info ( requirements )
105
119
if requirements [ :controller ]
106
120
requirements [ :controller ] = requirements . fetch ( :controller ) . underscore . delete_suffix ( "_controller" )
0 commit comments