Skip to content

Commit d0449f9

Browse files
authored
Improve error handling and logging (#8)
1 parent 074642b commit d0449f9

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

lib/ruby_lsp/rails/factory_bot/server_addon.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,21 @@ def initialize(stdout, stderr, capabilities)
2323

2424
def name = FactoryBot::ADDON_NAME
2525

26-
def execute(request, params)
26+
def execute(request, params) # rubocop:disable Metrics/MethodLength
2727
case request.to_sym
2828
when :factories
2929
collection = FactoryHandler.new.execute(params)
3030
when :traits
3131
collection = TraitHandler.new.execute(params)
3232
when :attributes
3333
collection = AttributeHandler.new.execute(params)
34+
else
35+
return send_error_response("#{request} no supported")
3436
end
3537

36-
send_result(collection)
38+
send_result(collection || [])
39+
rescue => e # rubocop:disable Style/RescueStandardError
40+
send_error_response("An error occurred while fetching #{request} - #{e}")
3741
end
3842
end
3943
end

lib/ruby_lsp/rails/factory_bot/server_addon/factory_handler.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ class FactoryHandler < BaseHandler
1212

1313
def fetch(params)
1414
name = params[:name]
15-
::FactoryBot.factories.select do |f|
15+
factories = ::FactoryBot.factories.select do |f|
1616
name.nil? || name.empty? ? true : f.name.to_s.include?(params[:name])
1717
end
18+
return factories, nil
1819
end
1920

20-
def serialise(factories)
21+
def serialise(factories, *)
2122
factories.map do |fact|
2223
model_class = fact.send :class_name
2324

lib/ruby_lsp/rails/factory_bot/server_addon/trait_handler.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ def fetch(params)
1717
defined_traits = defined_traits(factory, trait_name_partial)
1818
internal_traits = internal_traits(factory.send(:class_name), trait_name_partial)
1919

20-
defined_traits.concat(internal_traits)
20+
traits = defined_traits.concat(internal_traits)
21+
return traits, nil
2122
rescue KeyError
2223
# FactoryBot throws a KeyError if the factory isn't found, so nothing to do here
2324
end
@@ -32,7 +33,7 @@ def internal_traits(factory_class_name, trait_name_partial)
3233
end
3334
end
3435

35-
def serialise(traits)
36+
def serialise(traits, *)
3637
traits.map do |tr|
3738
source_location = block_for(tr)&.source_location
3839
{

0 commit comments

Comments
 (0)