Class: ArcadiaGemsWizard

Inherits:
Object
  • Object
show all
Defined in:
lib/a-core.rb

Instance Method Summary collapse

Constructor Details

#initialize(_arcadia) ⇒ ArcadiaGemsWizard

Returns a new instance of ArcadiaGemsWizard.



2262
2263
2264
2265
# File 'lib/a-core.rb', line 2262

def initialize(_arcadia)
  @arcadia = _arcadia
  Arcadia.attach_listener(self, NeedRubyGemWizardEvent)
end

Instance Method Details

#on_need_ruby_gem_wizard(_event) ⇒ Object



2267
2268
2269
2270
2271
2272
2273
# File 'lib/a-core.rb', line 2267

def on_need_ruby_gem_wizard(_event)
  msg = "Appears that gem : '#{_event.gem_name}' required by : '#{_event.extension_name}' is not installed!\n Install it from gem?" 

  ArcadiaProblemEvent.new(self, "type"=>ArcadiaProblemEvent::DEPENDENCE_MISSING_TYPE,"title"=>"Gem '#{_event.gem_name}' missing!", "detail"=>msg).go!
  
#    Arcadia.process_event(ArcadiaProblemEvent.new(self, "type"=>ArcadiaProblemEvent::DEPENDENCE_MISSING_TYPE,"title"=>"Gem '#{_event.gem_name}' missing!", "detail"=>msg))
end

#try_to_install_gem(name, repository = nil, version = '>0') ⇒ Object

def on_need_ruby_gem_wizard(_event)

  msg = "Appears that gem : '#{_event.gem_name}' required by : '#{_event.extension_name}' is not installed!\n Do you want to try install it now?" 
  ans = Tk.messageBox('icon' => 'error', 'type' => 'yesno',
    'title' => "(Arcadia) Extensions '#{_event.extension_name}'",
    'message' => msg)
    if  ans == 'yes'
      _event.add_result(self, 'installed'=>try_to_install_gem(_event.gem_name,_event.gem_repository))
    else
      _event.add_result(self, 'installed'=>false)
    end
end


2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
# File 'lib/a-core.rb', line 2288

def try_to_install_gem(name, repository=nil, version = '>0')
  ret = false
  
  sh=ArcadiaSh.new
  cmd = "gem install --remote --include-dependencies #{name}"
  cmd="sudo #{cmd}" if !Arcadia.is_windows?
  cmd+=" --source=#{repository}" if repository
  sh.prepare_exec(cmd)    
  while sh.wait
    Tk.update
    #sleep(1)
  end
  ret=sh.result
  sh.destroy
  Gem.clear_paths
  ret
end