odania 0.0.32 → 0.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  }