Skip to content

Commit a1ee7ed

Browse files
committed
Refactor
1 parent 8cb7850 commit a1ee7ed

File tree

1 file changed

+34
-20
lines changed

1 file changed

+34
-20
lines changed

lib/ruby_lsp/ruby_lsp_rails/server.rb

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -57,26 +57,42 @@ def start
5757

5858
def execute(request, params)
5959
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" }
7879
end
7980

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)
8096
case request
8197
when "shutdown"
8298
@running = false
@@ -99,8 +115,6 @@ def execute(request, params)
99115
{ error: e.full_message(highlight: false) }
100116
end
101117

102-
private
103-
104118
def resolve_route_info(requirements)
105119
if requirements[:controller]
106120
requirements[:controller] = requirements.fetch(:controller).underscore.delete_suffix("_controller")

0 commit comments

Comments
 (0)