Module: Hubris

Included in:
Class
Defined in:
lib/hubris.rb,
lib/hubris/version.rb,
ext/stub/stub.c

Defined Under Namespace

Modules: Exports

Constant Summary collapse

HUBRIS_DIR =
ENV['HUBRIS_DIR'] || "/var/hubris"
SO_CACHE =
File.expand_path(HUBRIS_DIR + "/cache")
HS_CACHE =
File.expand_path(HUBRIS_DIR + "/source")
VERSION =
'0.0.6'
@@basepackages =
[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_packages(packages) ⇒ Object



39
40
41
# File 'lib/hubris.rb', line 39

def self.add_packages(packages)
  @@basepackages.concat packages
end

Instance Method Details

#hubris(options = { }) ⇒ Object

load the new functions into target



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/hubris.rb', line 44

def hubris(options = { })
  # :inline beats :source beats :mod
  immediate, source, mod,packages = [:inline,:source,:module,:packages].collect {|x| options[x]}
  build_args = options[:no_strict] ? [] : ["--strict"]
  # puts packages

  # leaves generated source lying around - might want to clean up, but
  # useful for debugging too...
  source = anonymous_module(immediate, build_args) if immediate
  mod    = gen_modname(source)                     if source
  raise "code error, should never happen" unless mod
  require(hubrify(mod,build_args,source||"",packages||[])) # let it crash

  # bind the functions from the Exports namespace
  include(eval("Hubris::Exports::#{zencode(mod)}"))
end