Skip to content

Commit 0c98405

Browse files
authored
Fix exception output capturing (#482)
1 parent 9cc59fc commit 0c98405

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

lib/ruby_lsp/ruby_lsp_rails/server.rb

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ def send_message(message)
1515
@stdout.write("Content-Length: #{json_message.length}\r\n\r\n#{json_message}")
1616
end
1717

18-
# Log a debug message to the editor's output
19-
def debug_message(message)
18+
# Log a message to the editor's output panel
19+
def log_message(message)
2020
$stderr.puts(message)
2121
end
2222
end
@@ -119,12 +119,17 @@ def execute(request, params)
119119
require params[:server_addon_path]
120120
ServerAddon.finalize_registrations!(@stdout)
121121
when "server_addon/delegate"
122-
server_addon_name = params.delete(:server_addon_name)
123-
request_name = params.delete(:request_name)
124-
ServerAddon.delegate(server_addon_name, request_name, params)
122+
server_addon_name = params[:server_addon_name]
123+
request_name = params[:request_name]
124+
ServerAddon.delegate(server_addon_name, request_name, params.except(:request_name, :server_addon_name))
125125
end
126+
request_name = request
127+
request_name = "#{params[:server_addon_name]}##{params[:request_name]}" if request == "server_addon/delegate"
128+
# Since this is a common problem, we show a specific error message to the user, instead of the full stack trace.
129+
rescue ActiveRecord::ConnectionNotEstablished
130+
log_message("Request #{request_name} failed because database connection was not established.")
126131
rescue => e
127-
send_message({ error: e.full_message(highlight: false) })
132+
log_message("Request #{request_name} failed:\n" + e.full_message(highlight: false))
128133
end
129134

130135
private

test/ruby_lsp_rails/runner_client_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def name
127127
end
128128
129129
def execute(request, params)
130-
debug_message("Hello!")
130+
log_message("Hello!")
131131
send_message({ request:, params: })
132132
end
133133
end

0 commit comments

Comments
 (0)