Module: Inline

Defined in:
lib/inline.rb

Overview

The Inline module is the top-level module used. It is responsible for instantiating the builder for the right language used, compilation/linking when needed, and loading the inlined code into the current namespace.

Defined Under Namespace

Classes: C

Constant Summary collapse

VERSION =
'3.8.6'
WINDOZE =
/mswin|mingw/ =~ RUBY_PLATFORM
RUBINIUS =
defined? RUBY_ENGINE
DEV_NULL =
(WINDOZE ? 'nul'      : '/dev/null')
GEM =
(WINDOZE ? 'gem.bat'  : 'gem')
RAKE =
if WINDOZE then
  'rake.bat'
elsif RUBINIUS then
  File.join(Gem.bindir, 'rake')
else
  "#{Gem.ruby} -S rake"
end

Class Method Summary collapse

Class Method Details

.directoryObject



136
137
138
139
140
141
142
143
# File 'lib/inline.rb', line 136

def self.directory
  directory = File.join(rootdir, ".ruby_inline")
  unless defined? @@directory and directory == @@directory
    @@directory = File.join(self.rootdir, ".ruby_inline")
  end
  Dir.assert_secure directory
  @@directory
end

.register(cls) ⇒ Object



84
85
86
87
# File 'lib/inline.rb', line 84

def self.register cls
  registered_inline_classes << cls
  registered_inline_classes.uniq!
end

.registered_inline_classesObject



89
90
91
# File 'lib/inline.rb', line 89

def self.registered_inline_classes
  @@registered_inline_classes ||= []
end

.rootdirObject

rootdir can be forced using INLINEDIR variable if not defined, it should store in user HOME folder

Under Windows user data can be stored in several locations:

HOME
HOMEDRIVE + HOMEPATH
APPDATA
USERPROFILE

Perform a check in that other to see if the environment is defined and if so, use it. only try this on Windows.



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/inline.rb', line 106

def self.rootdir
  env = ENV['INLINEDIR'] || ENV['HOME']

  if env.nil? and WINDOZE then
    # try HOMEDRIVE + HOMEPATH combination
    if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] then
      env = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
    end

    # no HOMEDRIVE? use APPDATA
    env = ENV['APPDATA'] if env.nil? and ENV['APPDATA']

    # bummer, still no env? then fall to USERPROFILE
    env = ENV['USERPROFILE'] if env.nil? and ENV['USERPROFILE']
  end

  if env.nil? then
    abort "Define INLINEDIR or HOME in your environment and try again"
  end

  unless defined? @@rootdir and env == @@rootdir and test ?d, @@rootdir then
    rootdir = env
    Dir.mkdir rootdir, 0700 unless test ?d, rootdir
    Dir.assert_secure rootdir
    @@rootdir = rootdir
  end

  @@rootdir
end