Module: Jetel::Helper

Defined in:
lib/jetel/helpers/os_helper.rb,
lib/jetel/helpers/general_helper.rb

Class Method Summary collapse

Class Method Details

.erb(template, vars) ⇒ Object



31
32
33
# File 'lib/jetel/helpers/general_helper.rb', line 31

def erb(template, vars)
  ERB.new(template).result(OpenStruct.new(vars).instance_eval { binding })
end

.erb_template(file, vars) ⇒ Object



35
36
37
38
# File 'lib/jetel/helpers/general_helper.rb', line 35

def erb_template(file, vars)
  template = File.open(file, 'r').read
  ERB.new(template).result(OpenStruct.new(vars).instance_eval { binding })
end

.get_loader(uri) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/jetel/helpers/general_helper.rb', line 21

def get_loader(uri)
  loaders = Loaders.loaders
  loader_schema = uri.split(':/').first.downcase
  res = loaders.find do |loader|
    loader[:class_name].downcase === loader_schema
  end

  res[:klass].new(uri)
end

.sanitize(str) ⇒ Object



40
41
42
# File 'lib/jetel/helpers/general_helper.rb', line 40

def sanitize(str)
  I18n.transliterate(str).gsub(/[^0-9a-z_\-]/i, '_')
end

.target_dir(modul, dir, source) ⇒ Object



15
16
17
18
19
# File 'lib/jetel/helpers/general_helper.rb', line 15

def target_dir(modul, dir, source)
  klass = modul.class.name.split('::').last
  source_name = Helper.sanitize(source[:name])
  File.join(dir || Config[:DATA_DIRECTORY], klass, source_name)
end

.which(cmd) ⇒ Object

Cross-platform way of finding an executable in the $PATH.

which('ruby') #=> /usr/bin/ruby


7
8
9
10
11
12
13
14
15
16
# File 'lib/jetel/helpers/os_helper.rb', line 7

def which(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each { |ext|
      exe = File.join(path, "#{cmd}#{ext}")
      return exe if File.executable?(exe) && !File.directory?(exe)
    }
  end
  return nil
end