Method: Reactive::GemDependency#embed

Defined in:
lib/reactive-core/gem_dependency.rb

#embedObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/reactive-core/gem_dependency.rb', line 89

def embed
  return "#{name} #{requirement} is already embedded." if embedded?
  # If the gem is already installed, use Gem::Installer to embed because we only need gem files and the spec
  if installed?
    require 'rubygems/installer'
    path = get_gem_path(name, requirement)
    basename = File.basename(path).sub(/\.gem$/, '')
    installer = Gem::Installer.new(path, :install_dir => Reactive.path_for('gems'))
    installer.unpack Reactive.path_for('gems', 'gems', basename)
    installer.write_spec
    @embedded = true
    "Successfully embedded #{name} #{installer.spec.version}"
  else
    cmd = "#{gem_command} #{install_command.join(' ')} -i #{Reactive.path_for('gems')} --ignore-dependencies"
    [cmd, %x(#{cmd})]
  end
end