Class: PlatformSH
- Inherits:
-
Object
- Object
- PlatformSH
- Defined in:
- lib/platform_sh.rb,
lib/platform_sh/version.rb
Constant Summary collapse
- VERSION =
"0.2.0"
Class Method Summary collapse
-
.config ⇒ Object
Reads Platform.sh configuration from environment and returns a single object.
-
.guess_database_url ⇒ Object
Tries to guess relational database url.
- .is_build_environment? ⇒ Boolean
- .on_platform? ⇒ Boolean
- .read_app_config ⇒ Object
- .read_base64_json(var_name) ⇒ Object
- .relationship(rel_name, attr) ⇒ Object
Class Method Details
.config ⇒ Object
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_url ⇒ Object
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
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
31 32 33 |
# File 'lib/platform_sh.rb', line 31 def self.on_platform? ENV.has_key? 'PLATFORM_PROJECT' end |
.read_app_config ⇒ Object
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 |