plek 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/plek.rb +75 -19
  2. data/lib/plek/version.rb +1 -1
  3. metadata +2 -2
@@ -1,10 +1,56 @@
1
1
  require 'plek/version'
2
2
 
3
3
  class Plek
4
- DOMAIN = {
5
- "test" => "test.gov.uk",
6
- "development" => "dev.gov.uk"
7
- }
4
+ DEFAULT_PATTERN = "pattern".freeze
5
+
6
+ SERVICES = {
7
+ "staging.frontend" => "demo.alphagov.co.uk",
8
+ "staging.authentication" => "signonotron.alpha.gov.uk",
9
+ "staging.needs" => "needotron.alpha.gov.uk",
10
+ "staging.publisher" => "guides.staging.alphagov.co.uk:8080",
11
+ "staging.data" => "imminence.staging.alphagov.co.uk:8080",
12
+ "staging.arbiter" => "panopticon.staging.alphagov.co.uk:8080",
13
+ "staging.#{DEFAULT_PATTERN}" => "%s.staging.alphagov.co.uk:8080",
14
+
15
+ "development.authentication" => "signonotron.dev.gov.uk",
16
+ "development.needs" => "needotron.dev.gov.uk",
17
+ "development.data" => "imminence.dev.gov.uk",
18
+ "development.arbiter" => "panopticon.dev.gov.uk",
19
+ "development.#{DEFAULT_PATTERN}" => "%s.dev.gov.uk",
20
+
21
+ "test.authentication" => "signonotron.test.gov.uk",
22
+ "test.needs" => "needotron.test.gov.uk",
23
+ "test.data" => "imminence.test.gov.uk",
24
+ "test.arbiter" => "panopticon.test.gov.uk",
25
+ "test.#{DEFAULT_PATTERN}" => "%s.test.gov.uk",
26
+ }.freeze
27
+
28
+ PURPOSE_FOR_SERVICE = {
29
+ "need-o-tron" => "needs",
30
+ "sign-on-o-tron" => "authentication",
31
+ "imminence" => "data",
32
+ "panopticon" => "arbiter"
33
+ }.freeze
34
+
35
+ SERVICE_NAMES = %w(
36
+ panopticon
37
+ sign-on-o-tron
38
+ imminence
39
+ publisher
40
+ need-o-tron
41
+ frontend
42
+ ).freeze
43
+
44
+ SERVICE_NAMES.each do |service_name|
45
+ # Backward compatibility
46
+ method_name = service_name.gsub(/[^a-z]+/, '_')
47
+ define_method method_name do
48
+ name = PURPOSE_FOR_SERVICE[service_name] || service_name
49
+ puts "Plek##{method_name} is deprecated and will be removed in an " +
50
+ "upcoming release.\nUse `Plek#find('#{name}')` instead."
51
+ find name
52
+ end
53
+ end
8
54
 
9
55
  attr_accessor :environment
10
56
  private :environment=, :environment
@@ -13,28 +59,38 @@ class Plek
13
59
  self.environment = environment
14
60
  end
15
61
 
62
+ # Find the URI for a service.
63
+ #
64
+ # Services don't map directly to applications since we may replace an
65
+ # application but retain the service.
66
+ #
67
+ # Currently we have these services:
68
+ #
69
+ # frontend: Where the public can see our output.
70
+ # authentication: Where we send staff so they can log in.
71
+ # publisher: Where we write content.
72
+ # needs: Where we record the needs that we're going to fulfill.
73
+ # data: Where our datasets live.
74
+ # arbiter: organises data shared between the applications
75
+ #
16
76
  def find service
77
+ name = name_for service
78
+ host = SERVICES[service_key_for(name)]
79
+ host ||= SERVICES["#{environment}.#{DEFAULT_PATTERN}"].to_s % name
17
80
  # FIXME: *Everything* should be SSL
18
- "http://#{name_for(service)}.#{domain}"
81
+ "http://#{host}"
19
82
  end
20
83
 
21
- %W(panopticon sign-on-o-tron imminence publisher need-o-tron frontend).each do |service|
22
- define_method service.gsub(/[^a-z]+/, '_') do
23
- find service
24
- end
84
+ def service_key_for name
85
+ "#{environment}.#{name}"
25
86
  end
26
87
 
27
88
  def name_for service
28
- case service.to_s.strip
29
- when 'frontend'
30
- 'www'
31
- else
32
- service.gsub(/[^a-z]+/, '')
33
- end
34
- end
35
-
36
- def domain
37
- DOMAIN[environment]
89
+ name = service.to_s.dup
90
+ name.downcase!
91
+ name.strip!
92
+ name.gsub! /[^a-z]+/, ''
93
+ name
38
94
  end
39
95
 
40
96
  def self.current
@@ -1,3 +1,3 @@
1
1
  class Plek
2
- VERSION = '0.0.3'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-21 00:00:00.000000000Z
12
+ date: 2011-09-28 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Find the right hostname for each service in an environment-dependent
15
15
  manner