Ruby solargraph

From wikinotes

A ruby LSP gem.

Documentation

homepage https://github.com/castwide/solargraph
rails support gist https://gist.github.com/castwide/28b349566a223dfb439a337aea29713e
rails support issue https://github.com/castwide/solargraph/issues/87

Locations

${PROJECT}/.solargraph.yml project configuration

Configuration

solargraph config  # generate a .solargraph.yml
# ${PROJECT}/.solargraph.yml

include:
  - "lib/**/*.rb"
  - "app/**/*.rb"

Languages

ruby

Just works.

rails

Yard Initializer File

Solargraph official docs suggest adding latest version of https://gist.github.com/castwide/28b349566a223dfb439a337aea29713e to your project.

# ${PROJECT}/config/initializers/${ANYTHING}.rb
# source: https://gist.github.com/castwide/28b349566a223dfb439a337aea29713e
#
# The following comments fill some of the gaps in Solargraph's understanding of
# Rails apps. Since they're all in YARD, they get mapped in Solargraph but
# ignored at runtime.
#
# You can put this file anywhere in the project, as long as it gets included in
# the workspace maps. It's recommended that you keep it in a standalone file
# instead of pasting it into an existing one.
#
# @!parse
#   class ActionController::Base
#     include ActionController::MimeResponds
#     extend ActiveSupport::Callbacks::ClassMethods
#     extend AbstractController::Callbacks::ClassMethods
#   end
#   class ActiveRecord::Base
#     extend ActiveRecord::QueryMethods
#     extend ActiveRecord::FinderMethods
#     extend ActiveRecord::Associations::ClassMethods
#     extend ActiveRecord::Inheritance::ClassMethods
#     include ActiveRecord::Persistence
#   end
# @!override ActiveRecord::FinderMethods#find
#   @overload find(id)
#     @param id [Integer]
#     @return [self]
#   @overload find(list)
#     @param list [Array]
#     @return [Array<self>]
#   @overload find(*args)
#     @return [Array<self>]
#   @return [self, Array<self>]

Rather than committing to the project, you may want to add to a global <coce>~/.gitignore.

# ~/.gitignore
**/config/initializers/solargraph.rb

solargraph-rails

NOTE:

This hasn't worked for me so far, using old ruby/rails

The solargraph-rails gem also helps. https://github.com/iftheshoefritz/solargraph-rails

It looks like model comments are required, built using ruby annotate gem.

gem install solargraph              # v40+
gem install solargraph-rails --pre  # '--pre' required
# ${PROJECT}/.solargraph.yml

plugins:
  - solargraph-rails

Debugging

# run to start solargraph in a console before starting vim
# you'll be able to use the output to debug issues
solargraph stdio