lib/ruby_lsp_rails/railtie.rb in ruby-lsp-rails-0.1.0 vs lib/ruby_lsp_rails/railtie.rb in ruby-lsp-rails-0.2.0
- old
+ new
@@ -1,20 +1,38 @@
# typed: strict
# frozen_string_literal: true
-require "ruby_lsp_rails/middleware"
+require "rails/railtie"
+require "ruby_lsp_rails/rack_app"
module RubyLsp
module Rails
class Railtie < ::Rails::Railtie
- initializer "ruby_lsp_rails.setup" do |app|
- app.config.middleware.insert_after(ActionDispatch::ShowExceptions, RubyLsp::Rails::Middleware)
+ config.ruby_lsp_rails = ActiveSupport::OrderedOptions.new
+ config.ruby_lsp_rails.server = true
- config.after_initialize do |_app|
+ initializer "ruby_lsp_rails.setup" do |_app|
+ config.after_initialize do |app|
+ unless config.ruby_lsp_rails.server == false
+ app.routes.prepend do
+ T.bind(self, ActionDispatch::Routing::Mapper)
+ mount(RackApp.new => RackApp::BASE_PATH)
+ end
+ end
+
+ # If we start the app with `bin/rails console` then `Rails::Server` is not defined.
if defined?(::Rails::Server)
ssl_enable, host, port = ::Rails::Server::Options.new.parse!(ARGV).values_at(:SSLEnable, :Host, :Port)
app_uri = "#{ssl_enable ? "https" : "http"}://#{host}:#{port}"
- File.write("#{::Rails.root}/tmp/app_uri.txt", app_uri)
+ app_uri_path = "#{::Rails.root}/tmp/app_uri.txt"
+ File.write(app_uri_path, app_uri)
+
+ at_exit do
+ # The app_uri.txt file should only exist when the server is running. The extension uses its presence to
+ # report if the server is running or not. If the server is not running, some of the extension features
+ # will not be available.
+ File.delete(app_uri_path) if File.exist?(app_uri_path)
+ end
end
end
end
end
end