module Rsense::Server::LoadPath

Constants

Dependency

Public Instance Methods

check_version(gem_paths, version) click to toggle source
# File lib/rsense/server/load_path.rb, line 43
def check_version(gem_paths, version)
  gem_paths.select do |p|
    p.to_s =~ /#{version}/
  end
end
dependencies(project) click to toggle source
# File lib/rsense/server/load_path.rb, line 19
def dependencies(project)
  @deps = []
  @gemfile = find_gemfile(project)
  if @gemfile
    start_dir = Dir.pwd
    Dir.chdir(@gemfile.dirname)
    lockfile = Bundler::LockfileParser.new(Bundler.read_file(@gemfile))
    @deps = gem_info(lockfile)
    Dir.chdir(start_dir)
  end
  @deps
end
fetch() click to toggle source
# File lib/rsense/server/load_path.rb, line 15
def fetch
  $LOAD_PATH
end
find_gemfile(project, level=0) click to toggle source
# File lib/rsense/server/load_path.rb, line 55
def find_gemfile(project, level=0)
  level = level + 1
  pth = Pathname.new(project).expand_path
  lockfile = pth.join("Gemfile.lock")
  if lockfile.exist?
    return lockfile
  else
    unless level > 6
      lockfile = find_gemfile(pth.parent, level)
    end
  end
end
find_paths(name) click to toggle source
# File lib/rsense/server/load_path.rb, line 49
def find_paths(name)
  paths = Gem.find_files(name)
  return paths unless paths.empty? && name.length > 1
  find_paths(name.chop)
end
gem_info(lfile) click to toggle source
# File lib/rsense/server/load_path.rb, line 32
def gem_info(lfile)
  lfile.specs.map do |s|
    generate_struct(s.name, s.version)
  end
end
generate_struct(name, version) click to toggle source
# File lib/rsense/server/load_path.rb, line 38
def generate_struct(name, version)
  paths = check_version(find_paths(name), version)
  Dependency.new(name, "#{name}-#{version.to_s}", paths)
end
paths() click to toggle source
# File lib/rsense/server/load_path.rb, line 11
def paths
  fetch.map { |p| p unless p.to_s =~ /^file:/ }
end