Module: SvelteOnRails::GemUtils
- Defined in:
- lib/svelte_on_rails/installer/gem_utils.rb
Class Method Summary collapse
- .check_gem_version_in_lockfile(gem_name) ⇒ Object
- .install_gem(gem_name, group: nil, force: false) ⇒ Object
- .vite_rails_in_gemfile? ⇒ Boolean
Class Method Details
.check_gem_version_in_lockfile(gem_name) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/svelte_on_rails/installer/gem_utils.rb', line 23 def self.check_gem_version_in_lockfile(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, force: false) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/svelte_on_rails/installer/gem_utils.rb', line 5 def self.install_gem(gem_name, group: nil, force: false) v = check_gem_version_in_lockfile(gem_name) if v && !force 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_in_lockfile(gem_name)}" end end end |
.vite_rails_in_gemfile? ⇒ Boolean
33 34 35 36 37 |
# File 'lib/svelte_on_rails/installer/gem_utils.rb', line 33 def self.vite_rails_in_gemfile? gemfile_path = Rails.root.join('Gemfile') gemfile = File.read(gemfile_path) gemfile.match?(/^\s*(?!#)\s*gem\s+['"]vite_rails['"](?:\s*,|\s*$)/m) end |