ruby-lsp-rails 0.3.13 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +2 -10
 - data/Rakefile +1 -0
 - data/lib/ruby_lsp/ruby_lsp_rails/addon.rb +13 -9
 - data/lib/ruby_lsp/ruby_lsp_rails/code_lens.rb +7 -6
 - data/lib/ruby_lsp/ruby_lsp_rails/document_symbol.rb +2 -1
 - data/lib/ruby_lsp/ruby_lsp_rails/runner_client.rb +11 -8
 - data/lib/ruby_lsp/ruby_lsp_rails/support/location_builder.rb +4 -4
 - data/lib/ruby_lsp_rails/version.rb +1 -1
 - metadata +3 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: '030969e625bedc49a1365d04226c7f8d63bafaf2ad211438e4c438f8977630da'
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: af273b69dc8d2d86e08709e25a3b8d5f7c549bbeefd9003a6fa43951a7dc7eee
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 4dfdfee466a27d8f1f4c9a2b8baba4fb43cab15a4f59a164c3fb65d9e22532e334f31e1d46c8394d898099340707c581ec0d096c06be7dadef50ad98a638a2df
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9608fa839313f2438827b4e64fbda19ce090b4d79109002f003ceb8ee24689bddea454a0c0e21f736275488548cd72b5f57df4b915f37c4af2ee4b5d19f8a674
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,15 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            # Ruby LSP Rails
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            Ruby LSP Rails is a [Ruby LSP](https://github.com/Shopify/ruby-lsp) addon for extra Rails editor features 
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            * Hover over an ActiveRecord model to reveal its schema.
         
     | 
| 
       8 
     | 
    
         
            -
            * Run or debug a test by clicking on the code lens which appears above the test class, or an individual test.
         
     | 
| 
       9 
     | 
    
         
            -
            * Navigate to associations, validations, callbacks and test cases using your editor's "Go to Symbol" feature, or outline view.
         
     | 
| 
       10 
     | 
    
         
            -
            * Jump to the definition of callbacks using your editor's "Go to Definition" feature.
         
     | 
| 
       11 
     | 
    
         
            -
            * Jump to the declaration of a route.
         
     | 
| 
       12 
     | 
    
         
            -
            * Code Lens allowing fast-forwarding or rewinding of migrations.
         
     | 
| 
       13 
     | 
    
         
            -
            * Code Lens showing the path that a route action corresponds to.
         
     | 
| 
      
 5 
     | 
    
         
            +
            Ruby LSP Rails is a [Ruby LSP](https://github.com/Shopify/ruby-lsp) addon for extra [Rails editor features](https://shopify.github.io/ruby-lsp-rails/FEATURES_md.html).
         
     | 
| 
       14 
6 
     | 
    
         | 
| 
       15 
7 
     | 
    
         
             
            ## Installation
         
     | 
| 
       16 
8 
     | 
    
         | 
| 
         @@ -22,7 +14,7 @@ There is no need to add the gem to your bundle. 
     | 
|
| 
       22 
14 
     | 
    
         
             
            ## Documentation
         
     | 
| 
       23 
15 
     | 
    
         | 
| 
       24 
16 
     | 
    
         
             
            See the [documentation](https://shopify.github.io/ruby-lsp-rails) for more in-depth details about the
         
     | 
| 
       25 
     | 
    
         
            -
            [supported features](https://shopify.github.io/ruby-lsp-rails/ 
     | 
| 
      
 17 
     | 
    
         
            +
            [supported features](https://shopify.github.io/ruby-lsp-rails/FEATURES_md.html).
         
     | 
| 
       26 
18 
     | 
    
         | 
| 
       27 
19 
     | 
    
         
             
            ## How Runtime Introspection Works
         
     | 
| 
       28 
20 
     | 
    
         | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -23,6 +23,7 @@ RDoc::Task.new do |rdoc| 
     | 
|
| 
       23 
23 
     | 
    
         
             
              rdoc.rdoc_files.include("*.md", "lib/**/*.rb")
         
     | 
| 
       24 
24 
     | 
    
         
             
              rdoc.rdoc_dir = "docs"
         
     | 
| 
       25 
25 
     | 
    
         
             
              rdoc.markup = "markdown"
         
     | 
| 
      
 26 
     | 
    
         
            +
              rdoc.title = "Ruby LSP Rails"
         
     | 
| 
       26 
27 
     | 
    
         
             
              rdoc.generator = "snapper"
         
     | 
| 
       27 
28 
     | 
    
         
             
              rdoc.options.push("--copy-files", "misc")
         
     | 
| 
       28 
29 
     | 
    
         
             
              rdoc.options.push("--copy-files", "LICENSE.txt")
         
     | 
| 
         @@ -26,23 +26,27 @@ module RubyLsp 
     | 
|
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                    # We first initialize the client as a NullClient, so that we can start the server in a background thread. Until
         
     | 
| 
       28 
28 
     | 
    
         
             
                    # the real client is initialized, features that depend on it will not be blocked by using the NullClient
         
     | 
| 
       29 
     | 
    
         
            -
                    @ 
     | 
| 
      
 29 
     | 
    
         
            +
                    @rails_runner_client = T.let(NullClient.new, RunnerClient)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    @global_state = T.let(nil, T.nilable(GlobalState))
         
     | 
| 
       30 
31 
     | 
    
         
             
                  end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
                  sig { returns(RunnerClient) }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  attr_reader :rails_runner_client
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
       32 
36 
     | 
    
         
             
                  sig { override.params(global_state: GlobalState, message_queue: Thread::Queue).void }
         
     | 
| 
       33 
37 
     | 
    
         
             
                  def activate(global_state, message_queue)
         
     | 
| 
       34 
     | 
    
         
            -
                    @global_state =  
     | 
| 
      
 38 
     | 
    
         
            +
                    @global_state = global_state
         
     | 
| 
       35 
39 
     | 
    
         
             
                    $stderr.puts("Activating Ruby LSP Rails addon v#{VERSION}")
         
     | 
| 
       36 
40 
     | 
    
         
             
                    # Start booting the real client in a background thread. Until this completes, the client will be a NullClient
         
     | 
| 
       37 
     | 
    
         
            -
                    Thread.new { @ 
     | 
| 
      
 41 
     | 
    
         
            +
                    Thread.new { @rails_runner_client = RunnerClient.create_client }
         
     | 
| 
       38 
42 
     | 
    
         
             
                    register_additional_file_watchers(global_state: global_state, message_queue: message_queue)
         
     | 
| 
       39 
43 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
      
 44 
     | 
    
         
            +
                    @global_state.index.register_enhancement(IndexingEnhancement.new)
         
     | 
| 
       41 
45 
     | 
    
         
             
                  end
         
     | 
| 
       42 
46 
     | 
    
         | 
| 
       43 
47 
     | 
    
         
             
                  sig { override.void }
         
     | 
| 
       44 
48 
     | 
    
         
             
                  def deactivate
         
     | 
| 
       45 
     | 
    
         
            -
                    @ 
     | 
| 
      
 49 
     | 
    
         
            +
                    @rails_runner_client.shutdown
         
     | 
| 
       46 
50 
     | 
    
         
             
                  end
         
     | 
| 
       47 
51 
     | 
    
         | 
| 
       48 
52 
     | 
    
         
             
                  # Creates a new CodeLens listener. This method is invoked on every CodeLens request
         
     | 
| 
         @@ -54,7 +58,7 @@ module RubyLsp 
     | 
|
| 
       54 
58 
     | 
    
         
             
                    ).void
         
     | 
| 
       55 
59 
     | 
    
         
             
                  end
         
     | 
| 
       56 
60 
     | 
    
         
             
                  def create_code_lens_listener(response_builder, uri, dispatcher)
         
     | 
| 
       57 
     | 
    
         
            -
                    CodeLens.new(@ 
     | 
| 
      
 61 
     | 
    
         
            +
                    CodeLens.new(@rails_runner_client, T.must(@global_state), response_builder, uri, dispatcher)
         
     | 
| 
       58 
62 
     | 
    
         
             
                  end
         
     | 
| 
       59 
63 
     | 
    
         | 
| 
       60 
64 
     | 
    
         
             
                  sig do
         
     | 
| 
         @@ -65,7 +69,7 @@ module RubyLsp 
     | 
|
| 
       65 
69 
     | 
    
         
             
                    ).void
         
     | 
| 
       66 
70 
     | 
    
         
             
                  end
         
     | 
| 
       67 
71 
     | 
    
         
             
                  def create_hover_listener(response_builder, node_context, dispatcher)
         
     | 
| 
       68 
     | 
    
         
            -
                    Hover.new(@ 
     | 
| 
      
 72 
     | 
    
         
            +
                    Hover.new(@rails_runner_client, response_builder, node_context, T.must(@global_state), dispatcher)
         
     | 
| 
       69 
73 
     | 
    
         
             
                  end
         
     | 
| 
       70 
74 
     | 
    
         | 
| 
       71 
75 
     | 
    
         
             
                  sig do
         
     | 
| 
         @@ -90,7 +94,7 @@ module RubyLsp 
     | 
|
| 
       90 
94 
     | 
    
         
             
                  end
         
     | 
| 
       91 
95 
     | 
    
         
             
                  def create_definition_listener(response_builder, uri, node_context, dispatcher)
         
     | 
| 
       92 
96 
     | 
    
         
             
                    index = T.must(@global_state).index
         
     | 
| 
       93 
     | 
    
         
            -
                    Definition.new(@ 
     | 
| 
      
 97 
     | 
    
         
            +
                    Definition.new(@rails_runner_client, response_builder, node_context, index, dispatcher)
         
     | 
| 
       94 
98 
     | 
    
         
             
                  end
         
     | 
| 
       95 
99 
     | 
    
         | 
| 
       96 
100 
     | 
    
         
             
                  sig { params(changes: T::Array[{ uri: String, type: Integer }]).void }
         
     | 
| 
         @@ -98,7 +102,7 @@ module RubyLsp 
     | 
|
| 
       98 
102 
     | 
    
         
             
                    if changes.any? do |change|
         
     | 
| 
       99 
103 
     | 
    
         
             
                         change[:uri].end_with?("db/schema.rb") || change[:uri].end_with?("structure.sql")
         
     | 
| 
       100 
104 
     | 
    
         
             
                       end
         
     | 
| 
       101 
     | 
    
         
            -
                      @ 
     | 
| 
      
 105 
     | 
    
         
            +
                      @rails_runner_client.trigger_reload
         
     | 
| 
       102 
106 
     | 
    
         
             
                    end
         
     | 
| 
       103 
107 
     | 
    
         
             
                  end
         
     | 
| 
       104 
108 
     | 
    
         | 
| 
         @@ -138,8 +138,14 @@ module RubyLsp 
     | 
|
| 
       138 
138 
     | 
    
         
             
                    class_name = node.constant_path.slice
         
     | 
| 
       139 
139 
     | 
    
         
             
                    superclass_name = node.superclass&.slice
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
      
 141 
     | 
    
         
            +
                    # We need to use a stack because someone could define a nested class
         
     | 
| 
      
 142 
     | 
    
         
            +
                    # inside a controller. When we exit that nested class declaration, we are
         
     | 
| 
      
 143 
     | 
    
         
            +
                    # back in a controller context. This part is used in other places in the LSP
         
     | 
| 
      
 144 
     | 
    
         
            +
                    @constant_name_stack << [class_name, superclass_name]
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
       141 
146 
     | 
    
         
             
                    if class_name.end_with?("Test")
         
     | 
| 
       142 
     | 
    
         
            -
                       
     | 
| 
      
 147 
     | 
    
         
            +
                      fully_qualified_name = @constant_name_stack.map(&:first).join("::")
         
     | 
| 
      
 148 
     | 
    
         
            +
                      command = "#{test_command} #{@path} --name \"/#{Shellwords.escape(fully_qualified_name)}(#|::)/\""
         
     | 
| 
       143 
149 
     | 
    
         
             
                      add_test_code_lens(node, name: class_name, command: command, kind: :group)
         
     | 
| 
       144 
150 
     | 
    
         
             
                      @group_id_stack.push(@group_id)
         
     | 
| 
       145 
151 
     | 
    
         
             
                      @group_id += 1
         
     | 
| 
         @@ -149,11 +155,6 @@ module RubyLsp 
     | 
|
| 
       149 
155 
     | 
    
         
             
                      command = "#{migrate_command} VERSION=#{migration_version}"
         
     | 
| 
       150 
156 
     | 
    
         
             
                      add_migrate_code_lens(node, name: class_name, command: command)
         
     | 
| 
       151 
157 
     | 
    
         
             
                    end
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
                    # We need to use a stack because someone could define a nested class
         
     | 
| 
       154 
     | 
    
         
            -
                    # inside a controller. When we exit that nested class declaration, we are
         
     | 
| 
       155 
     | 
    
         
            -
                    # back in a controller context. This part is used in other places in the LSP
         
     | 
| 
       156 
     | 
    
         
            -
                    @constant_name_stack << [class_name, superclass_name]
         
     | 
| 
       157 
158 
     | 
    
         
             
                  end
         
     | 
| 
       158 
159 
     | 
    
         | 
| 
       159 
160 
     | 
    
         
             
                  sig { params(node: Prism::ClassNode).void }
         
     | 
| 
         @@ -151,7 +151,8 @@ module RubyLsp 
     | 
|
| 
       151 
151 
     | 
    
         
             
                          selection_range: range_from_location(argument.location),
         
     | 
| 
       152 
152 
     | 
    
         
             
                        )
         
     | 
| 
       153 
153 
     | 
    
         
             
                      when Prism::ConstantReadNode, Prism::ConstantPathNode
         
     | 
| 
       154 
     | 
    
         
            -
                        name = argument 
     | 
| 
      
 154 
     | 
    
         
            +
                        name = constant_name(argument)
         
     | 
| 
      
 155 
     | 
    
         
            +
                        next unless name
         
     | 
| 
       155 
156 
     | 
    
         
             
                        next if name.empty?
         
     | 
| 
       156 
157 
     | 
    
         | 
| 
       157 
158 
     | 
    
         
             
                        append_document_symbol(
         
     | 
| 
         @@ -63,8 +63,11 @@ module RubyLsp 
     | 
|
| 
       63 
63 
     | 
    
         
             
                    @stdout = T.let(stdout, IO)
         
     | 
| 
       64 
64 
     | 
    
         
             
                    @stderr = T.let(stderr, IO)
         
     | 
| 
       65 
65 
     | 
    
         
             
                    @wait_thread = T.let(wait_thread, Process::Waiter)
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                    # We set binmode for Windows compatibility
         
     | 
| 
      
 68 
     | 
    
         
            +
                    @stdin.binmode
         
     | 
| 
      
 69 
     | 
    
         
            +
                    @stdout.binmode
         
     | 
| 
      
 70 
     | 
    
         
            +
                    @stderr.binmode
         
     | 
| 
       68 
71 
     | 
    
         | 
| 
       69 
72 
     | 
    
         
             
                    $stderr.puts("Ruby LSP Rails booting server")
         
     | 
| 
       70 
73 
     | 
    
         
             
                    count = 0
         
     | 
| 
         @@ -158,8 +161,6 @@ module RubyLsp 
     | 
|
| 
       158 
161 
     | 
    
         
             
                    [@stdin, @stdout, @stderr].all?(&:closed?) && !@wait_thread.alive?
         
     | 
| 
       159 
162 
     | 
    
         
             
                  end
         
     | 
| 
       160 
163 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
                  private
         
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
164 
     | 
    
         
             
                  sig do
         
     | 
| 
       164 
165 
     | 
    
         
             
                    params(
         
     | 
| 
       165 
166 
     | 
    
         
             
                      request: String,
         
     | 
| 
         @@ -171,6 +172,12 @@ module RubyLsp 
     | 
|
| 
       171 
172 
     | 
    
         
             
                    read_response
         
     | 
| 
       172 
173 
     | 
    
         
             
                  end
         
     | 
| 
       173 
174 
     | 
    
         | 
| 
      
 175 
     | 
    
         
            +
                  # Notifications are like messages, but one-way, with no response sent back.
         
     | 
| 
      
 176 
     | 
    
         
            +
                  sig { params(request: String, params: T.nilable(T::Hash[Symbol, T.untyped])).void }
         
     | 
| 
      
 177 
     | 
    
         
            +
                  def send_notification(request, params = nil) = send_message(request, params)
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                  private
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
       174 
181 
     | 
    
         
             
                  sig { overridable.params(request: String, params: T.nilable(T::Hash[Symbol, T.untyped])).void }
         
     | 
| 
       175 
182 
     | 
    
         
             
                  def send_message(request, params = nil)
         
     | 
| 
       176 
183 
     | 
    
         
             
                    message = { method: request }
         
     | 
| 
         @@ -184,10 +191,6 @@ module RubyLsp 
     | 
|
| 
       184 
191 
     | 
    
         
             
                    # The server connection died
         
     | 
| 
       185 
192 
     | 
    
         
             
                  end
         
     | 
| 
       186 
193 
     | 
    
         | 
| 
       187 
     | 
    
         
            -
                  # Notifications are like messages, but one-way, with no response sent back.
         
     | 
| 
       188 
     | 
    
         
            -
                  sig { params(request: String, params: T.nilable(T::Hash[Symbol, T.untyped])).void }
         
     | 
| 
       189 
     | 
    
         
            -
                  def send_notification(request, params = nil) = send_message(request, params)
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
194 
     | 
    
         
             
                  sig { overridable.returns(T.nilable(T::Hash[Symbol, T.untyped])) }
         
     | 
| 
       192 
195 
     | 
    
         
             
                  def read_response
         
     | 
| 
       193 
196 
     | 
    
         
             
                    raw_response = @mutex.synchronize do
         
     | 
| 
         @@ -11,18 +11,18 @@ module RubyLsp 
     | 
|
| 
       11 
11 
     | 
    
         
             
                      sig { params(location_string: String).returns(Interface::Location) }
         
     | 
| 
       12 
12 
     | 
    
         
             
                      def line_location_from_s(location_string)
         
     | 
| 
       13 
13 
     | 
    
         
             
                        *file_parts, line = location_string.split(":")
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                        raise ArgumentError, "Invalid location string given" unless file_parts
         
     | 
| 
      
 14 
     | 
    
         
            +
                        raise ArgumentError, "Invalid location string given" if file_parts.empty?
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
16 
     | 
    
         
             
                        # On Windows, file paths will look something like `C:/path/to/file.rb:123`. Only the last colon is the line
         
     | 
| 
       18 
17 
     | 
    
         
             
                        # number and all other parts compose the file path
         
     | 
| 
       19 
18 
     | 
    
         
             
                        file_path = file_parts.join(":")
         
     | 
| 
      
 19 
     | 
    
         
            +
                        line_as_number = line ? Integer(line.to_i) - 1 : 0
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                        Interface::Location.new(
         
     | 
| 
       22 
22 
     | 
    
         
             
                          uri: URI::Generic.from_path(path: file_path).to_s,
         
     | 
| 
       23 
23 
     | 
    
         
             
                          range: Interface::Range.new(
         
     | 
| 
       24 
     | 
    
         
            -
                            start: Interface::Position.new(line:  
     | 
| 
       25 
     | 
    
         
            -
                            end: Interface::Position.new(line:  
     | 
| 
      
 24 
     | 
    
         
            +
                            start: Interface::Position.new(line: line_as_number, character: 0),
         
     | 
| 
      
 25 
     | 
    
         
            +
                            end: Interface::Position.new(line: line_as_number, character: 0),
         
     | 
| 
       26 
26 
     | 
    
         
             
                          ),
         
     | 
| 
       27 
27 
     | 
    
         
             
                        )
         
     | 
| 
       28 
28 
     | 
    
         
             
                      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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.14
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Shopify
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-09-12 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: ruby-lsp
         
     | 
| 
         @@ -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. 
     | 
| 
      
 83 
     | 
    
         
            +
            rubygems_version: 3.5.18
         
     | 
| 
       84 
84 
     | 
    
         
             
            signing_key:
         
     | 
| 
       85 
85 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       86 
86 
     | 
    
         
             
            summary: A Ruby LSP addon for Rails
         
     |