diff --git a/lib/herb.rb b/lib/herb.rb index af0081979..f0e06e039 100644 --- a/lib/herb.rb +++ b/lib/herb.rb @@ -118,5 +118,19 @@ def dev_server_port(project_path = nil) rescue StandardError nil end + + def ensure_installed(&block) + require "bundler/inline" + + verbose = $VERBOSE + $VERBOSE = nil + + gemfile(true, quiet: true) do # steep:ignore + source "https://rubygems.org" # steep:ignore + instance_eval(&block) # steep:ignore + end + ensure + $VERBOSE = verbose + end end end diff --git a/lib/herb/action_view/render_analyzer.rb b/lib/herb/action_view/render_analyzer.rb index b4f183d32..61a10739b 100644 --- a/lib/herb/action_view/render_analyzer.rb +++ b/lib/herb/action_view/render_analyzer.rb @@ -784,12 +784,7 @@ def process_file_for_render_calls(file) def ensure_parallel! return if defined?(Parallel) - require "bundler/inline" - - gemfile(true, quiet: true) do # steep:ignore - source "https://rubygems.org" # steep:ignore - gem "parallel" # steep:ignore - end + Herb.ensure_installed { gem "parallel" } # steep:ignore end def collect_ruby_render_references diff --git a/lib/herb/project.rb b/lib/herb/project.rb index 1630ba3fd..712b28841 100644 --- a/lib/herb/project.rb +++ b/lib/herb/project.rb @@ -903,12 +903,7 @@ def percentage(part, total) def ensure_parallel! return if defined?(Parallel) - require "bundler/inline" - - gemfile(true, quiet: true) do - source "https://rubygems.org" - gem "parallel" - end + Herb.ensure_installed { gem "parallel" } # steep:ignore end def separator diff --git a/sig/herb.rbs b/sig/herb.rbs index 605f466f8..7aae701c9 100644 --- a/sig/herb.rbs +++ b/sig/herb.rbs @@ -23,4 +23,6 @@ module Herb def self.reset_configuration!: () -> untyped def self.dev_server_port: (?untyped project_path) -> untyped + + def self.ensure_installed: () ?{ (?) -> untyped } -> untyped end