platform_sh 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d7dc484d0414e3a3d3033ca3a5435910932c4c9
4
- data.tar.gz: 5e234ccea2bc43683dbefe4ec7ee60547116c745
3
+ metadata.gz: 557c7b76ab879a1d8ed7683b02b6e5440b7003ba
4
+ data.tar.gz: 73f9f29e020929824a6a1e8140532dd27e844dd8
5
5
  SHA512:
6
- metadata.gz: 51c0fa7f383216fd004bc70287936e8f857b3f4d1e52e4fc59f303a3e668371155bc909d4ca2c611c9d82e031e2d8ec968feb3024b1a91b80ec298c1ef0d0139
7
- data.tar.gz: 4f4ff7373bb4c045817222e20decddb343bf8534bea8feadadca7f45dafc684ae8a5fbd9621587fde8834d979d7a0d0ba673cdc648bd5d892ae89d6e216111ab
6
+ metadata.gz: cc9631b086ae4b5e76ae843e09193b23f65c49b030d299d1ccb6ca2adad718988b5313deb80fcbb40ed97a9ee402195d9a608307a27849b509890b23a88fb9e5
7
+ data.tar.gz: e2b1b759d75c824c93f0c3b51ea09f50be34f2cc919ed03ea21748f66a9ba91fcb8bad2f38d597f3387838b4e4be68366689c6394bcdb08a5b64e2391035c4e5
data/lib/platform_sh.rb CHANGED
@@ -55,29 +55,78 @@ class PlatformSH
55
55
  JSON.parse(File.read('/run/config.json'))
56
56
  end
57
57
 
58
+
58
59
  #Tries to guess relational database url
59
60
  def self.guess_database_url
60
- databases = PlatformSH::config["relationships"].select {|k,v| v[0]["scheme"]=="mysql" || v[0]["scheme"]=="pgsql"}
61
- case databases.length
62
- when 0
63
- $stderr.puts "Could not find a relational database"
64
- return nil
65
- when 1
66
- database = databases.first[1][0]
67
- #This is needed to choose between mysql and mysql2 gems, magically.
68
- case database['scheme']
69
- when "mysql"
70
- scheme = "mysql2"
71
- when "pgsql"
72
- scheme = "postgresql"
73
- else
74
- scheme = database['scheme']
75
- end
76
- database_url = "#{scheme}://#{database['username']}:#{database['password']}@#{database['host']}:#{database['port']}/#{database['path']}"
77
- return database_url
78
- else
79
- $stderr.puts "More than one database, giving up, set configuration by hand"
61
+ postgresql_url = self.guess_postgresql_url
62
+ mysql_url = self.guess_mysql_url
63
+ if !mysql_url.nil? && !postgresql_url.nil?
64
+ $stderr.puts "More than one relational database, giving up, set configuration by hand"
65
+ return nil
66
+ end
67
+ if (mysql_url.nil? && postgresql_url.nil?)
68
+ $stderr.puts "Could not find a relational database"
69
+ return nil
80
70
  end
71
+ return mysql_url || postgresql_url
81
72
  end
82
73
 
83
- end
74
+ def self.guess_url(service_type, platform_scheme, url_template)
75
+ services = PlatformSH::config["relationships"].select {|k,v| v[0]["scheme"]==platform_scheme}
76
+ case services.length
77
+ when 0
78
+ $stderr.puts "Could not find an #{service_type}"
79
+ return nil
80
+ when 1
81
+ service = services.first[1][0]
82
+ service = service.each_with_object({}){|(k,v), h| h[k.to_sym] = v} #keys need to be symbols
83
+ return url_template % service
84
+ else
85
+ $stderr.puts "More than one #{service_type}, giving up, set configuration by hand"
86
+ end
87
+ end
88
+
89
+ def self.guess_elasticsearch_url
90
+ self.guess_url("elasticsearch", "http", "http://%{host}:%{port}")
91
+ end
92
+
93
+ def self.guess_redis_url
94
+ self.guess_url("redis", "redis", "redis://%{host}:%{port}")
95
+ end
96
+
97
+ def self.guess_mongodb_url
98
+ self.guess_url("mongodb", "mongodb", "mongodb://%{username}:%{password}@%{host}:%{port}/%{path}")
99
+ end
100
+
101
+ def self.guess_solr_url
102
+ self.guess_url("solr", "solr", "http://%{host}:%{port}/%{path}")
103
+ end
104
+
105
+ def self.guess_mysql_url
106
+ #fallback to mysql url if mysql2 gem is not loaded
107
+ if Gem::Specification::find_all_by_name("mysql2").empty?
108
+ template = "mysql://%{username}:%{password}@%{host}:%{port}/%{path}"
109
+ else
110
+ template = "mysql2://%{username}:%{password}@%{host}:%{port}/%{path}"
111
+ end
112
+ self.guess_url("mysql", "mysql",template)
113
+ end
114
+
115
+ def self.guess_rabbitmq_url
116
+ self.guess_url("rabbitmq", "amqp","amqp://%{username}:%{password}@%{host}:%{port}")
117
+ end
118
+
119
+ def self.guess_postgresql_url
120
+ self.guess_url("postgresql", "pgsql","postgresql://%{username}:%{password}@%{host}:%{port}")
121
+ end
122
+
123
+ def self.export_services_urls
124
+ ENV['DATABASE_URL']=PlatformSH::guess_database_url
125
+ ENV['MONGODB_URL']=PlatformSH::guess_mongodb_url
126
+ ENV['REDIS_URL']=PlatformSH::guess_redis_url
127
+ ENV['ELASTICSEARCH_URL']=PlatformSH::guess_redis_url
128
+ ENV['RABBITMQ_URL']=PlatformSH::guess_rabbitmq_url
129
+ ENV['SOLR_URL']=PlatformSH::guess_solr_url
130
+ end
131
+
132
+ end
@@ -1,3 +1,3 @@
1
1
  class PlatformSH
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: platform_sh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ori Pekelman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-07 00:00:00.000000000 Z
11
+ date: 2016-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler