Module: SvelteOnRails::GemUtils

Defined in:
lib/svelte_on_rails/installer/gem_utils.rb

Class Method Summary collapse

Class Method Details

.check_gem_version(gem_name) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/svelte_on_rails/installer/gem_utils.rb', line 5

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

.install_gem(gem_name, group: nil) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/svelte_on_rails/installer/gem_utils.rb', line 16

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 "Successfully installed #{gem_name} version #{check_gem_version(gem_name)}"
    end
  end
end