Class: ProjectDependencies

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
app/models/project_dependencies.rb

Instance Method Summary collapse

Instance Method Details

#can_determine_dependencies?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'app/models/project_dependencies.rb', line 34

def can_determine_dependencies?
  !!locked_gems
end

#databaseObject



15
16
17
18
# File 'app/models/project_dependencies.rb', line 15

def database
  @database = guess_database unless defined?(@database)
  @database
end

#dependency_version(dependency) ⇒ Object



29
30
31
32
# File 'app/models/project_dependencies.rb', line 29

def dependency_version(dependency)
  spec = locked_gems.specs.find { |spec| spec.name == dependency } if locked_gems
  spec.version if spec
end

#guess_databaseObject



20
21
22
23
24
25
26
27
# File 'app/models/project_dependencies.rb', line 20

def guess_database
  return nil unless can_determine_dependencies?
  return "Postgres" if dependency_version("pg")
  return "MySQL" if dependency_version("mysql") || dependency_version("mysql2")
  return "SQLite" if dependency_version("sqlite3")
  return "MongoDB" if dependency_version("mongoid")
  "None"
end

#locked_gemsObject



38
39
40
41
# File 'app/models/project_dependencies.rb', line 38

def locked_gems
  @locked_gems = lockfile && Bundler::LockfileParser.new(lockfile) unless defined?(@locked_gems)
  @locked_gems
end

#lockfileObject



43
44
45
46
47
48
49
50
# File 'app/models/project_dependencies.rb', line 43

def lockfile
  return "" if repo.nil?

  @lockfile = read_file("Gemfile.lock", commit: repo.branch("master")) unless defined?(@lockfile)
  @lockfile
rescue Houston::Adapters::VersionControl::FileNotFound
  @lockfile = ""
end

#modelObject



3
4
5
# File 'app/models/project_dependencies.rb', line 3

def model
  __getobj__
end

#platformObject



7
8
9
10
11
12
13
# File 'app/models/project_dependencies.rb', line 7

def platform
  @platform ||= begin
    if dependency_version("rails") then "rails"
    else ""
    end
  end
end