lib/svelte_on_rails/installer/gem_utils.rb
module SvelteOnRails module GemUtils def self.check_gem_version(gem_name) gl = File.read(Rails.root.join('Gemfile.lock')) regex = /(?<=#{Regexp.escape(gem_name)})[<>=\(~0-9\. \),]+/ match = gl.match(regex) if match match.to_s.gsub('(','').gsub(')','').strip end end def self.install_gem(gem_name, group: nil) v = check_gem_version(gem_name) if v puts "Gem #{gem_name} already installed, version: #{v} " else cmd = [ "bundle add #{gem_name}", (group ? "--group=#{group}" : nil) ].compact.join(' ') stdout, stderr, status = Open3.capture3(cmd) if stderr.present? raise stderr else puts "Installed #{gem_name} version #{check_gem_version(gem_name)}" end end end end end