Class: PlatformSH

Inherits:
Object
  • Object
show all
Defined in:
lib/platform_sh.rb,
lib/platform_sh/version.rb

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.configObject

Reads Platform.sh configuration from environment and returns a single object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/platform_sh.rb', line 8

def self.config
  if on_platform?
    conf = {}
    conf["application"] = read_base64_json('PLATFORM_APPLICATION')
    conf["application_name"] =ENV["PLATFORM_APPLICATION_NAME"] || nil
    conf["app_dir"] =ENV["PLATFORM_APP_DIR"] || nil
    conf["project"] =ENV["PLATFORM_PROJECT"] || nil
    conf["document_root"] =ENV["PLATFORM_DOCUMENT_ROOT"] || nil
    if !is_build_environment?
      conf["environment"] =ENV["PLATFORM_ENVIRONMENT"] || nil
      conf["project_entropy"] =ENV["PLATFORM_PROJECT_ENTROPY"] || nil
      conf["port"] =ENV["PORT"] || nil
      conf["socket"] =ENV["SOCKET"] || nil
      conf["relationships"] = read_base64_json('PLATFORM_RELATIONSHIPS')
      conf["variables"] = read_base64_json('PLATFORM_VARIABLES')
    end
  else
    $stderr.puts "This is not running on platform.sh"
    return nil
  end
  conf
end

.guess_database_urlObject

Tries to guess relational database url



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/platform_sh.rb', line 59

def self.guess_database_url
  databases = PlatformSH::config["relationships"].select {|k,v| v[0]["scheme"]=="mysql" || v[0]["scheme"]=="postgresql"}
  case databases.length
  when 0
    $stderr.puts "Could not find a relational database"
    return nil
  when 1
    database = databases.first[1][0]
    database_url = "#{database['scheme']}://#{database['username']}:#{database['password']}@#{database['host']}:#{database['port']}/#{database['path']}"
    return database_url
  else
    $stderr.puts "More than one database, giving up, set configuration by hand"
  end
end

.is_build_environment?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/platform_sh.rb', line 35

def self.is_build_environment?
  (!ENV.has_key?('PLATFORM_ENVIRONMENT') && ENV.has_key?('PLATFORM_PROJECT'))
end

.on_platform?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/platform_sh.rb', line 31

def self.on_platform?
  ENV.has_key? 'PLATFORM_PROJECT'
end

.read_app_configObject



54
55
56
# File 'lib/platform_sh.rb', line 54

def self.read_app_config
  JSON.parse(File.read('/run/config.json'))
end

.read_base64_json(var_name) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/platform_sh.rb', line 44

def self.read_base64_json(var_name)
  begin
    return JSON.parse(Base64.decode64(ENV[var_name]))
  rescue
    $stderr.puts "no " + var_name + " environment variable"
    return nil
  end
end

.relationship(rel_name, attr) ⇒ Object



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

def self.relationship rel_name, attr
  on_platform? ? config["relationships"][rel_name].first[attr] : nil
end