odania 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +17 -13
  3. data/lib/odania/config/layout.rb +9 -19
  4. data/lib/odania/config/page_base.rb +22 -22
  5. data/lib/odania/config/style.rb +2 -15
  6. data/lib/odania/config/sub_domain.rb +27 -19
  7. data/lib/odania/config.rb +1 -2
  8. data/lib/odania/consul.rb +10 -0
  9. data/lib/odania/version.rb +1 -1
  10. data/lib/odania.rb +0 -6
  11. data/odania.gemspec +1 -0
  12. data/spec/fixtures/global_config.json +48 -69
  13. data/spec/fixtures/plugin_config_1.json +35 -41
  14. data/spec/lib/odania/config/global_config_spec.rb +5 -3
  15. data/spec/lib/odania/config/plugin_config_spec.rb +4 -1
  16. data/spec/spec_helper.rb +1 -0
  17. metadata +16 -32
  18. data/config/varnish_config.json +0 -7
  19. data/features/step_definitions/varnish_steps.rb +0 -7
  20. data/features/varnish.feature +0 -8
  21. data/lib/odania/config/internal.rb +0 -58
  22. data/lib/odania/varnish/generators/generate_backend_vcl.rb +0 -48
  23. data/lib/odania/varnish/generators/generate_catch_all_vcl.rb +0 -17
  24. data/lib/odania/varnish/generators/generate_default_vcl.rb +0 -17
  25. data/lib/odania/varnish/generators/generate_final_vcl.rb +0 -17
  26. data/lib/odania/varnish/generators/generate_general_vcl.rb +0 -17
  27. data/lib/odania/varnish/generators/generate_redirects_vcl.rb +0 -18
  28. data/lib/odania/varnish/generators/generate_site_assets_vcl.rb +0 -14
  29. data/lib/odania/varnish/generators/generate_site_vcl.rb +0 -41
  30. data/lib/odania/varnish/generators/generate_sites_vcl.rb +0 -31
  31. data/lib/odania/varnish.rb +0 -92
  32. data/spec/lib/odania/varnish_spec.rb +0 -37
  33. data/templates/varnish/backend.vcl.erb +0 -51
  34. data/templates/varnish/catch_all.vcl.erb +0 -5
  35. data/templates/varnish/default.vcl.erb +0 -18
  36. data/templates/varnish/final.vcl.erb +0 -11
  37. data/templates/varnish/general.vcl.erb +0 -118
  38. data/templates/varnish/general_site.vcl.erb +0 -33
  39. data/templates/varnish/general_site_assets.vcl.erb +0 -21
  40. data/templates/varnish/redirects.vcl.erb +0 -12
  41. data/templates/varnish/site.vcl.erb +0 -93
  42. data/templates/varnish/site_assets.vcl.erb +0 -47
  43. data/templates/varnish/sites.vcl.erb +0 -11
  44. data/templates/varnish/websocker.vcl.erb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8825d66726c0bd366677b565db4efda65f94781
4
- data.tar.gz: f0af777d50dd142c6e8abac8c88b5ad9c7f0bbca
3
+ metadata.gz: 62d6f1e9704adc70a6639be0dffe1d21d38c1a27
4
+ data.tar.gz: 1e504dce975347d4eed79fd07f6ae6a7f6900996
5
5
  SHA512:
6
- metadata.gz: d68b5ee5db78792eb73574caf0a8aa4a4c31b85584167abe16c62c044a3aff78695e3e7756ab7eb41b9cc048a17df7d2624d2aa4d52dc9c698ad5bd3c127b246
7
- data.tar.gz: 4bbbc38ab251fb28d5332b3ec9b8ad67439486ecf794410a970fa32d3beecf79c5f1d2c224750aa01a36ee516f0f1cdd53f4b29887ef4321ab7acccbfc8cc1e6
6
+ metadata.gz: a7d96d1ff2a6f46a40358bdc9121814e1a4caa8d0e37fcf7911b4983bc254fb96f2acba48d1df25943dfd01fbc52ef7dd9fd2da89d083ead5b5aac3b33035fbf
7
+ data.tar.gz: 1f71f63a376f8f33366a20f45bd686ee692be9219dec1ea4d4f1f14a0ca8193682d5f4d11da2b1249b99e6c8a24d538f3fb78a6c6aa4bfc53c5dbefbca111670
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- odania (0.0.31)
4
+ odania (0.0.32)
5
5
  deep_merge
6
6
  diplomat
7
7
  erubis
@@ -14,7 +14,7 @@ GEM
14
14
  codeclimate-test-reporter (0.5.0)
15
15
  simplecov (>= 0.7.1, < 1.0.0)
16
16
  coderay (1.1.1)
17
- cucumber (2.3.2)
17
+ cucumber (2.3.3)
18
18
  builder (>= 2.1.2)
19
19
  cucumber-core (~> 1.4.0)
20
20
  cucumber-wire (~> 0.0.1)
@@ -27,9 +27,9 @@ GEM
27
27
  cucumber-wire (0.0.1)
28
28
  deep_merge (1.0.1)
29
29
  diff-lcs (1.2.5)
30
- diplomat (0.15.0)
30
+ diplomat (0.18.0)
31
31
  faraday (~> 0.9)
32
- json (~> 1.8)
32
+ json
33
33
  docile (1.1.5)
34
34
  erubis (2.7.0)
35
35
  faraday (0.9.2)
@@ -37,9 +37,9 @@ GEM
37
37
  ffi (1.9.10)
38
38
  formatador (0.2.5)
39
39
  gherkin (3.2.0)
40
- guard (2.13.0)
40
+ guard (2.14.0)
41
41
  formatador (>= 0.2.4)
42
- listen (>= 2.7, <= 4.0)
42
+ listen (>= 2.7, < 4.0)
43
43
  lumberjack (~> 1.0)
44
44
  nenv (~> 0.1)
45
45
  notiffany (~> 0.0)
@@ -47,28 +47,30 @@ GEM
47
47
  shellany (~> 0.0)
48
48
  thor (>= 0.18.1)
49
49
  guard-compat (1.2.1)
50
- guard-rspec (4.6.4)
50
+ guard-rspec (4.7.2)
51
51
  guard (~> 2.1)
52
52
  guard-compat (~> 1.1)
53
53
  rspec (>= 2.99.0, < 4.0)
54
+ hashdiff (0.3.0)
54
55
  json (1.8.3)
55
- listen (3.0.6)
56
- rb-fsevent (>= 0.9.3)
57
- rb-inotify (>= 0.9.7)
56
+ listen (3.1.5)
57
+ rb-fsevent (~> 0.9, >= 0.9.4)
58
+ rb-inotify (~> 0.9, >= 0.9.7)
59
+ ruby_dep (~> 1.2)
58
60
  lumberjack (1.0.10)
59
61
  method_source (0.8.2)
60
- multi_json (1.11.2)
62
+ multi_json (1.12.1)
61
63
  multi_test (0.1.2)
62
64
  multipart-post (2.0.0)
63
65
  nenv (0.3.0)
64
- notiffany (0.0.8)
66
+ notiffany (0.1.0)
65
67
  nenv (~> 0.1)
66
68
  shellany (~> 0.0)
67
69
  pry (0.10.3)
68
70
  coderay (~> 1.1.0)
69
71
  method_source (~> 0.8.1)
70
72
  slop (~> 3.4)
71
- public_suffix (1.5.3)
73
+ public_suffix (2.0.1)
72
74
  rake (10.5.0)
73
75
  rb-fsevent (0.9.7)
74
76
  rb-inotify (0.9.7)
@@ -86,6 +88,7 @@ GEM
86
88
  diff-lcs (>= 1.2.0, < 2.0)
87
89
  rspec-support (~> 3.4.0)
88
90
  rspec-support (3.4.1)
91
+ ruby_dep (1.3.1)
89
92
  shellany (0.0.1)
90
93
  simplecov (0.11.2)
91
94
  docile (~> 1.1.0)
@@ -104,6 +107,7 @@ DEPENDENCIES
104
107
  cucumber
105
108
  guard
106
109
  guard-rspec
110
+ hashdiff
107
111
  odania!
108
112
  rake (< 11.0)
109
113
  rspec
@@ -1,39 +1,29 @@
1
1
  module Odania
2
2
  module Config
3
- class Layout
4
- attr_accessor :styles
3
+ class Layout < PageBase
4
+ attr_accessor :config
5
5
 
6
6
  def initialize
7
7
  reset
8
8
  end
9
9
 
10
- def assets
11
- return {} if self.styles['_general'].nil? or self.styles['_general'].assets.nil?
12
- self.styles['_general'].assets
13
- end
14
-
15
10
  def dump
16
- style_data = {}
17
- styles.each_pair do |name, style|
18
- style_data[name] = style.dump
19
- end
20
-
21
- result = {}
22
- result['styles'] =style_data unless style_data.nil?
11
+ result = super
12
+ result['config'] = config unless config.nil?
23
13
  result
24
14
  end
25
15
 
26
16
  def load(data, group_name)
27
17
  reset
28
- unless data['styles'].nil?
29
- data['styles'].each_pair do |key, val|
30
- self.styles[key].load(val, group_name)
31
- end
18
+ super(data, group_name)
19
+ unless data['config'].nil?
20
+ self.config = data['config']
32
21
  end
33
22
  end
34
23
 
35
24
  def reset
36
- self.styles = Hash.new { |hash, key| hash[key] = Style.new(key) }
25
+ super
26
+ self.config = {}
37
27
  end
38
28
  end
39
29
  end
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
3
  class PageBase
4
- attr_accessor :direct, :dynamic
4
+ attr_accessor :assets, :partials
5
5
 
6
6
  def initialize
7
7
  reset
@@ -9,17 +9,17 @@ module Odania
9
9
 
10
10
  def add(data, group_name=nil)
11
11
  duplicates = Hash.new { |hash, key| hash[key] = [] }
12
- unless data['direct'].nil?
13
- data['direct'].each_pair do |name, direct_data|
14
- duplicates[:direct] << name if self.direct.key? name
15
- self.direct[name].load(direct_data, group_name)
12
+ unless data['assets'].nil?
13
+ data['assets'].each_pair do |name, asset_data|
14
+ duplicates[:assets] << name if self.assets.key? name
15
+ self.assets[name].load(asset_data, group_name)
16
16
  end
17
17
  end
18
18
 
19
- unless data['dynamic'].nil?
20
- data['dynamic'].each_pair do |name, dynamic_data|
21
- duplicates[:dynamic] << name if self.direct.key? name
22
- self.dynamic[name].load(dynamic_data, group_name)
19
+ unless data['partials'].nil?
20
+ data['partials'].each_pair do |name, partial_data|
21
+ duplicates[:partials] << name if self.partials.key? name
22
+ self.partials[name].load(partial_data, group_name)
23
23
  end
24
24
  end
25
25
  duplicates
@@ -30,31 +30,31 @@ module Odania
30
30
  end
31
31
 
32
32
  def reset
33
- self.direct = Hash.new { |hash, key| hash[key] = Page.new }
34
- self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
33
+ self.assets = Hash.new { |hash, key| hash[key] = Page.new }
34
+ self.partials = Hash.new { |hash, key| hash[key] = Page.new }
35
35
 
36
- @plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
36
+ @plugins = {:partials => Hash.new { |hash, key| hash[key] = [] }, :assets => Hash.new { |hash, key| hash[key] = [] }}
37
37
  end
38
38
 
39
39
  def [](type)
40
- return self.direct if 'direct'.eql? type.to_s
41
- self.dynamic
40
+ return self.assets if 'assets'.eql? type.to_s
41
+ self.partials
42
42
  end
43
43
 
44
44
  def dump
45
- direct_data = {}
46
- direct.each_pair do |web_url, page|
47
- direct_data[web_url] = page.dump
45
+ asset_data = {}
46
+ assets.each_pair do |web_url, page|
47
+ asset_data[web_url] = page.dump
48
48
  end
49
49
 
50
- dynamic_data = {}
51
- dynamic.each_pair do |web_url, page|
52
- dynamic_data[web_url] = page.dump
50
+ partial_data = {}
51
+ partials.each_pair do |web_url, page|
52
+ partial_data[web_url] = page.dump
53
53
  end
54
54
 
55
55
  {
56
- 'direct' => direct_data,
57
- 'dynamic' => dynamic_data
56
+ 'assets' => asset_data,
57
+ 'partials' => partial_data
58
58
  }
59
59
  end
60
60
  end
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
- class Style < PageBase
4
- attr_accessor :name, :entry_point, :dynamic, :assets
3
+ class Style
4
+ attr_accessor :name, :entry_point
5
5
 
6
6
  def initialize(name)
7
7
  self.name = name
@@ -15,13 +15,7 @@ module Odania
15
15
  def dump
16
16
  result = super
17
17
 
18
- asset_data = {}
19
- assets.each_pair do |asset_url, page|
20
- asset_data[asset_url] = page.dump
21
- end
22
-
23
18
  result['entry_point'] = entry_point
24
- result['assets'] = asset_data
25
19
  result
26
20
  end
27
21
 
@@ -29,12 +23,6 @@ module Odania
29
23
  reset
30
24
  super(data, group_name)
31
25
  self.entry_point = data['entry_point'] unless data['entry_point'].nil?
32
-
33
- unless data['assets'].nil?
34
- data['assets'].each_pair do |name, asset_data|
35
- self.assets[name].load(asset_data, group_name)
36
- end
37
- end
38
26
  end
39
27
 
40
28
  private
@@ -42,7 +30,6 @@ module Odania
42
30
  def reset
43
31
  super
44
32
  self.entry_point = nil
45
- self.assets = Hash.new { |hash, key| hash[key] = Page.new }
46
33
  end
47
34
  end
48
35
  end
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
3
  class SubDomain < PageBase
4
- attr_accessor :name, :config, :dynamic, :internal, :from_plugin, :redirects
4
+ attr_accessor :name, :config, :web, :layouts, :from_plugin, :redirects
5
5
 
6
6
  def initialize(name)
7
7
  self.name = name
@@ -20,17 +20,6 @@ module Odania
20
20
  errors
21
21
  end
22
22
 
23
- def add_page(type, web_url, group_name, url_data, plugin_name)
24
- result = true
25
- result = false unless self.pages[type].key? web_url
26
- self.pages[type][web_url].group_name = group_name
27
- self.pages[type][web_url].plugin_url = url_data['plugin_url']
28
- self.pages[type][web_url].cacheable = url_data['cacheable'] unless url_data['cacheable'].nil?
29
- self.pages[type][web_url].expires = url_data['expires'] unless url_data['expires'].nil?
30
- @plugins[:page]["#{type}-#{web_url}"] << plugin_name
31
- result
32
- end
33
-
34
23
  def get_redirects
35
24
  return {} if self.redirects.nil?
36
25
  self.redirects
@@ -40,16 +29,23 @@ module Odania
40
29
  @plugins[type][key]
41
30
  end
42
31
 
43
- def assets
44
- self.internal.assets
45
- end
46
-
47
32
  def dump
48
33
  result = super
49
34
 
35
+ layout_data = {}
36
+ layouts.each_pair do |layout_name, layout|
37
+ layout_data[layout_name] = layout.dump
38
+ end
39
+
40
+ web_data = {}
41
+ web.each_pair do |url, page|
42
+ web_data[url] = page.dump
43
+ end
44
+
50
45
  result['redirects'] = self.redirects
51
46
  result['config'] = self.config
52
- result['internal'] = self.internal.dump
47
+ result['web'] = web_data
48
+ result['layouts'] = layout_data
53
49
  result
54
50
  end
55
51
 
@@ -64,7 +60,18 @@ module Odania
64
60
 
65
61
  self.config = data['config'] unless data['config'].nil?
66
62
 
67
- self.internal.load(data['internal'], group_name) unless data['internal'].nil?
63
+ unless data['web'].nil?
64
+ data['web'].each_pair do |name, partial_data|
65
+ self.web[name].load(partial_data)
66
+ end
67
+ end
68
+
69
+ unless data['layouts'].nil?
70
+ data['layouts'].each_pair do |name, layout_data|
71
+ self.layouts[name].load(layout_data, group_name)
72
+ end
73
+ end
74
+
68
75
  unless data['redirects'].nil?
69
76
  data['redirects'].each_pair do |src_url, target_url|
70
77
  duplicates[:redirect] << src_url if self.redirects.key? src_url
@@ -82,7 +89,8 @@ module Odania
82
89
  self.config = {}
83
90
  self.from_plugin = {:config => Hash.new { |hash, key| hash[key] = [] }}
84
91
  self.redirects = {}
85
- self.internal = Internal.new
92
+ self.layouts = Hash.new { |hash, key| hash[key] = Layout.new }
93
+ self.web = Hash.new { |hash, key| hash[key] = Page.new }
86
94
  end
87
95
  end
88
96
  end
data/lib/odania/config.rb CHANGED
@@ -1,11 +1,10 @@
1
- require_relative 'config/internal'
2
1
  require_relative 'config/domain'
3
2
  require_relative 'config/duplicates'
4
- require_relative 'config/layout'
5
3
  require_relative 'config/page'
6
4
  require_relative 'config/plugin_config'
7
5
  require_relative 'config/global_config'
8
6
  require_relative 'config/page_base'
7
+ require_relative 'config/layout'
9
8
  require_relative 'config/sub_domain'
10
9
  require_relative 'config/style'
11
10
  require_relative 'config/backend'
data/lib/odania/consul.rb CHANGED
@@ -72,6 +72,16 @@ module Odania
72
72
  instances.is_a?(Array) ? instances : [instances]
73
73
  end
74
74
 
75
+ # TODO Is there an easier way to get the first service tagges with "core-backend"?
76
+ def get_core_service
77
+ core_backends = []
78
+ Diplomat::Service.get_all.each_pair do |key, tags|
79
+ core_backends << key if tags.include? 'core-backend'
80
+ end
81
+
82
+ get(core_backends.shuffle.first)
83
+ end
84
+
75
85
  def get(key, scope=:first)
76
86
  Diplomat::Service.get(key, scope)
77
87
  end
@@ -1,3 +1,3 @@
1
1
  module Odania
2
- VERSION = '0.0.32'
2
+ VERSION = '0.0.33'
3
3
  end
data/lib/odania.rb CHANGED
@@ -20,7 +20,6 @@ module Odania
20
20
  autoload :Config, 'odania/config'
21
21
  autoload :Consul, 'odania/consul'
22
22
  autoload :Plugin, 'odania/plugin'
23
- autoload :Varnish, 'odania/varnish'
24
23
 
25
24
  def self.plugin
26
25
  Odania.configure
@@ -28,11 +27,6 @@ module Odania
28
27
  @plugin
29
28
  end
30
29
 
31
- def self.varnish
32
- @varnish = Varnish.new if @varnish.nil?
33
- @varnish
34
- end
35
-
36
30
  def self.consul
37
31
  Odania.configure
38
32
  @consul
data/odania.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'guard'
26
26
  spec.add_development_dependency 'guard-rspec'
27
27
  spec.add_development_dependency 'codeclimate-test-reporter'
28
+ spec.add_development_dependency 'hashdiff'
28
29
 
29
30
  spec.add_dependency 'diplomat'
30
31
  spec.add_dependency 'erubis'
@@ -30,49 +30,30 @@
30
30
  "odania.com$": "www.odania.com",
31
31
  "odania.de$": "www.odania.com/de"
32
32
  },
33
- "internal": {
34
- "layouts": {
35
- },
36
- "partials": {
37
- }
33
+ "assets": {
34
+ },
35
+ "layouts": {
36
+ },
37
+ "partials": {
38
38
  }
39
39
  }
40
40
  },
41
41
  "example.com": {
42
-
43
42
  "_general": {
44
- "config": {
45
-
46
- },
47
- "data": {
48
- "external": {
49
-
50
- },
51
- "internal": {
52
-
53
- },
54
- "assets": {
55
-
56
- }
57
- }
43
+ "config": {}
58
44
  },
59
-
60
-
61
45
  "_general": {
62
46
  "config": {
63
47
  },
64
- "direct": {
48
+ "web": {
65
49
  "/imprint": {
66
50
  "group_name": "static-content",
67
51
  "plugin_url": "/contents/my-awesome-imprint"
68
52
  }
69
53
  },
70
- "internal": {
71
- "layouts": {
72
- },
73
- "partials": {
74
- }
75
- }
54
+ "assets": {},
55
+ "layouts": {},
56
+ "partials": {}
76
57
  },
77
58
  "www": {
78
59
  "dynamic": {
@@ -105,55 +86,53 @@
105
86
  "plugin_url": "/contents/my-special-imprint"
106
87
  }
107
88
  },
108
- "internal": {
109
- "layouts": {
110
- "main": {
89
+ "layouts": {
90
+ "main": {
91
+ "config": {
111
92
  "styles": {
112
93
  "_general": {
113
- "entry_point": "application.html.erb",
114
- "direct": {
115
- "layouts/mac-beath/img/favicon/favicon.png": {
116
- "group_name": "static-content",
117
- "plugin_url": "layouts/mac-beath/img/favicon/favicon.png",
118
- "cacheable": true,
119
- "expires": 60
120
- },
121
- "layouts/mac-beath/img/photos/t12.jpg": {
122
- "group_name": "static-content",
123
- "plugin_url": "layouts/mac-beath/img/photos/t12.jpg"
124
- }
125
- },
126
- "dynamic": {
127
- "layouts/simple/application_part1.html": {
128
- "group_name": "static-content",
129
- "plugin_url": "layouts/simple/application_part1.html.erb",
130
- "cacheable": true,
131
- "expires": 60
132
- }
133
- }
94
+ "entry_point": "application.html.erb"
134
95
  },
135
96
  "left_menu": {
136
- "entry_point": "application.html.erb",
137
- "direct": {},
138
- "dynamic": {}
97
+ "entry_point": "application.html.erb"
139
98
  }
140
99
  }
141
- }
142
- },
143
- "partials": {
144
- "footer": {
145
- "name": "footer",
146
- "group_name": "static-content",
147
- "plugin_url": "partials/footer.html",
148
- "cacheable": true,
149
- "expires": 60
150
100
  },
151
- "tracking": {
152
- "name": "tracking",
153
- "group_name": "static-content",
154
- "plugin_url": "partials/tracking.html"
101
+ "assets": {
102
+ "layouts/mac-beath/img/favicon/favicon.png": {
103
+ "group_name": "static-content",
104
+ "plugin_url": "layouts/mac-beath/img/favicon/favicon.png",
105
+ "cacheable": true,
106
+ "expires": 60
107
+ },
108
+ "layouts/mac-beath/img/photos/t12.jpg": {
109
+ "group_name": "static-content",
110
+ "plugin_url": "layouts/mac-beath/img/photos/t12.jpg"
111
+ }
112
+ },
113
+ "partials": {
114
+ "layouts/simple/application_part1.html": {
115
+ "group_name": "static-content",
116
+ "plugin_url": "layouts/simple/application_part1.html.erb",
117
+ "cacheable": true,
118
+ "expires": 60
119
+ }
155
120
  }
156
121
  }
122
+ },
123
+ "partials": {
124
+ "footer": {
125
+ "name": "footer",
126
+ "group_name": "static-content",
127
+ "plugin_url": "partials/footer.html",
128
+ "cacheable": true,
129
+ "expires": 60
130
+ },
131
+ "tracking": {
132
+ "name": "tracking",
133
+ "group_name": "static-content",
134
+ "plugin_url": "partials/tracking.html"
135
+ }
157
136
  }
158
137
  }
159
138
  }