ruby-lsp-rails 0.3.18 → 0.3.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 159bd26f9edd1f611d7f13cb5864e63d8ecc1c6180bbf5a426b9e40a98ce25ba
4
- data.tar.gz: 5266ed45904e0d62f074684a3a943ac1ef66b7827c4177ee7631d5ae46118553
3
+ metadata.gz: 17851fd3a4e5eb644fb2de5ee5f33ae07d38c4a12ffd6b8c868651002e8c3870
4
+ data.tar.gz: e4f0096f8874f4c34157fe0d1cd491ea0f278ebd1cbf1445d5a13b09e8c6b725
5
5
  SHA512:
6
- metadata.gz: ab185650a7d5d24f1d7e7faf29cea5eabc99d905525ea840b2000003059393c60be8b79ef9f97ef3a78bf58ae695a5d5f19aa5bbecc9ea367d48090c9614538c
7
- data.tar.gz: ef04db908af2f8ce9ee58a0059e51736f969f487b769a421d7df141cfc0518f31c2aa503eace5cc5ad24db36f56a1855ba55ffc4d5990f1eccc5d8cea1a4931c
6
+ metadata.gz: 97fe780b035265db5f2f8b96e58e8d6f89f66b64e43d0b7450604b3920ea818932dd581b76d1e13dea202a936446ca2a26f4c2d5341736f2d4a6c15059453bd6
7
+ data.tar.gz: 8a913fd58675f31da51c3175fd44b83b32ce5790a947461d8bf986e4c7e9d1de21a8b66a518e4ab16a18f6350e6b089823af5472ac6cac4e40ea3b9af734614f
@@ -141,7 +141,7 @@ module RubyLsp
141
141
 
142
142
  arg_receiver = argument.receiver
143
143
 
144
- name = arg_receiver.full_name if arg_receiver.is_a?(Prism::ConstantReadNode) ||
144
+ name = constant_name(arg_receiver) if arg_receiver.is_a?(Prism::ConstantReadNode) ||
145
145
  arg_receiver.is_a?(Prism::ConstantPathNode)
146
146
  next unless name
147
147
 
@@ -201,8 +201,8 @@ module RubyLsp
201
201
  arguments.each do |argument|
202
202
  case argument
203
203
  when Prism::ConstantReadNode, Prism::ConstantPathNode
204
- name = argument.full_name
205
- next if name.empty?
204
+ name = constant_name(argument)
205
+ next unless name
206
206
 
207
207
  append_document_symbol(
208
208
  name: "#{message} #{name}",
@@ -13,9 +13,13 @@ module RubyLsp
13
13
  owner: T.nilable(RubyIndexer::Entry::Namespace),
14
14
  node: Prism::CallNode,
15
15
  file_path: String,
16
+ code_units_cache: T.any(
17
+ T.proc.params(arg0: Integer).returns(Integer),
18
+ Prism::CodeUnitsCache,
19
+ ),
16
20
  ).void
17
21
  end
18
- def on_call_node(index, owner, node, file_path)
22
+ def on_call_node(index, owner, node, file_path, code_units_cache)
19
23
  return unless owner
20
24
 
21
25
  name = node.name
@@ -24,7 +28,7 @@ module RubyLsp
24
28
  when :extend
25
29
  handle_concern_extend(index, owner, node)
26
30
  when :has_one, :has_many, :belongs_to, :has_and_belongs_to_many
27
- handle_association(index, owner, node, file_path)
31
+ handle_association(index, owner, node, file_path, code_units_cache)
28
32
  end
29
33
  end
30
34
 
@@ -36,9 +40,13 @@ module RubyLsp
36
40
  owner: RubyIndexer::Entry::Namespace,
37
41
  node: Prism::CallNode,
38
42
  file_path: String,
43
+ code_units_cache: T.any(
44
+ T.proc.params(arg0: Integer).returns(Integer),
45
+ Prism::CodeUnitsCache,
46
+ ),
39
47
  ).void
40
48
  end
41
- def handle_association(index, owner, node, file_path)
49
+ def handle_association(index, owner, node, file_path, code_units_cache)
42
50
  arguments = node.arguments&.arguments
43
51
  return unless arguments
44
52
 
@@ -53,14 +61,15 @@ module RubyLsp
53
61
 
54
62
  return unless name
55
63
 
64
+ loc = RubyIndexer::Location.from_prism_location(name_arg.location, code_units_cache)
65
+
56
66
  # Reader
57
67
  index.add(RubyIndexer::Entry::Method.new(
58
68
  name,
59
69
  file_path,
60
- name_arg.location,
61
- name_arg.location,
70
+ loc,
71
+ loc,
62
72
  nil,
63
- index.configuration.encoding,
64
73
  [RubyIndexer::Entry::Signature.new([])],
65
74
  RubyIndexer::Entry::Visibility::PUBLIC,
66
75
  owner,
@@ -70,10 +79,9 @@ module RubyLsp
70
79
  index.add(RubyIndexer::Entry::Method.new(
71
80
  "#{name}=",
72
81
  file_path,
73
- name_arg.location,
74
- name_arg.location,
82
+ loc,
83
+ loc,
75
84
  nil,
76
- index.configuration.encoding,
77
85
  [RubyIndexer::Entry::Signature.new([RubyIndexer::Entry::RequiredParameter.new(name: name.to_sym)])],
78
86
  RubyIndexer::Entry::Visibility::PUBLIC,
79
87
  owner,
@@ -15,8 +15,8 @@ module RubyLsp
15
15
  @stdout.write("Content-Length: #{json_message.length}\r\n\r\n#{json_message}")
16
16
  end
17
17
 
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)
20
20
  $stderr.puts(message)
21
21
  end
22
22
  end
@@ -119,12 +119,17 @@ module RubyLsp
119
119
  require params[:server_addon_path]
120
120
  ServerAddon.finalize_registrations!(@stdout)
121
121
  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))
125
125
  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.")
126
131
  rescue => e
127
- send_message({ error: e.full_message(highlight: false) })
132
+ log_message("Request #{request_name} failed:\n" + e.full_message(highlight: false))
128
133
  end
129
134
 
130
135
  private
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module Rails
6
- VERSION = "0.3.18"
6
+ VERSION = "0.3.20"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.18
4
+ version: 0.3.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-07 00:00:00.000000000 Z
11
+ date: 2024-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-lsp
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.19.0
19
+ version: 0.20.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.20.0
22
+ version: 0.21.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.19.0
29
+ version: 0.20.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.20.0
32
+ version: 0.21.0
33
33
  description: A Ruby LSP addon that adds extra editor functionality for Rails applications
34
34
  email:
35
35
  - ruby@shopify.com
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  requirements: []
83
- rubygems_version: 3.5.20
83
+ rubygems_version: 3.5.21
84
84
  signing_key:
85
85
  specification_version: 4
86
86
  summary: A Ruby LSP addon for Rails