odania 0.0.17 → 0.0.18

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: 3a5a520ac12de40571852067855b0471297d244c
4
- data.tar.gz: 69685e1f55249f36906b3184e30336770c2f04c0
3
+ metadata.gz: 8231be278b477108ee91b8b72cb153b777dea0c6
4
+ data.tar.gz: 144e705b3ef3b3eef96860a6ed3e69215afaf997
5
5
  SHA512:
6
- metadata.gz: 2ca2320f73fedc397f662e0ce36955493af048d222af10d6824a17ec7e12e09997fedb525db3a116bf91caa70f0cebda3833062f0e294e6321e048ef20c17742
7
- data.tar.gz: e4fdeee4b1352e3ed427b5a089b7d02e3a37edf8715d4fa123f45f37e20b11ffab7a487d6ecc639da22cc49632cef2993f095637fb585a522970bdded34eac1c
6
+ metadata.gz: 639da08f0dc6895d1c7627a73ae835b110797a54250a9202e6d4acd9aa403d072026b9517afa924d3a4563cc0931a0ca01019e21e3e7aca7b5ba697647258223
7
+ data.tar.gz: a993aeef804be2fc9ab2e7618eaac0f18b27cfc077310c9814cd62d9b3ac00160121d972d9e95e07fc554368639d25b9a67dc664c0ff8c9e282d3b1100bda6a9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- odania (0.0.17)
4
+ odania (0.0.18)
5
5
  deep_merge
6
6
  diplomat
7
7
  erubis
@@ -41,6 +41,10 @@ module Odania
41
41
  duplicates
42
42
  end
43
43
 
44
+ def get_redirects
45
+ self.subdomains['_general'].get_redirects
46
+ end
47
+
44
48
  def [](key)
45
49
  self.subdomains[key]
46
50
  end
@@ -49,6 +49,11 @@ module Odania
49
49
  puts 'Error start ' + '+' * 50
50
50
  puts e.inspect
51
51
  puts 'Error end ' + '+' * 50
52
+ puts 'Error backtrace start ' + '+' * 50
53
+ e.backtrace.each do |line|
54
+ puts line
55
+ end
56
+ puts 'Error backtrace end ' + '+' * 50
52
57
  end
53
58
  end
54
59
  end
@@ -78,15 +83,17 @@ module Odania
78
83
  @default_subdomains.deep_merge(plugin_cfg['default_subdomains']) unless plugin_cfg['default_subdomains'].nil?
79
84
 
80
85
  # Add this service as a default backend if specified
81
- @default_backend_groups << group_name if config_section['default']
86
+ @default_backend_groups << group_name if plugin_cfg['plugin-config']['default']
82
87
 
83
88
  # Add config
84
- config_section.each_pair do |key, val|
85
- unless @config[key].nil?
86
- @duplicates.add :config, {key => 'already defined'}, group_name
89
+ unless config_section.nil?
90
+ config_section.each_pair do |key, val|
91
+ unless @config[key].nil?
92
+ @duplicates.add :config, {key => 'already defined'}, group_name
93
+ end
87
94
  end
95
+ @config.deep_merge! config_section
88
96
  end
89
- @config.deep_merge! config_section
90
97
 
91
98
  # Add Domain Information
92
99
  unless plugin_cfg['domains'].nil?
@@ -7,7 +7,17 @@ module Odania
7
7
  reset
8
8
  end
9
9
 
10
- def load(data)
10
+ def assets
11
+ result = {}
12
+ self.layouts.each_pair do |name, layout|
13
+ layout.assets.each_pair do |key, val|
14
+ result[key] = val
15
+ end
16
+ end
17
+ result
18
+ end
19
+
20
+ def load(data, group_name)
11
21
  reset
12
22
  unless data['partials'].nil?
13
23
  data['partials'].each_pair do |name, data|
@@ -17,7 +27,7 @@ module Odania
17
27
 
18
28
  unless data['layouts'].nil?
19
29
  data['layouts'].each_pair do |name, data|
20
- self.layouts[name].load(data)
30
+ self.layouts[name].load(data, group_name)
21
31
  end
22
32
  end
23
33
  end
@@ -7,6 +7,11 @@ module Odania
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
+
10
15
  def dump
11
16
  style_data = {}
12
17
  styles.each_pair do |name, style|
@@ -18,11 +23,11 @@ module Odania
18
23
  result
19
24
  end
20
25
 
21
- def load(data)
26
+ def load(data, group_name)
22
27
  reset
23
28
  unless data['styles'].nil?
24
29
  data['styles'].each_pair do |key, val|
25
- self.styles[key].load(val)
30
+ self.styles[key].load(val, group_name)
26
31
  end
27
32
  end
28
33
  end
@@ -21,6 +21,7 @@ module Odania
21
21
  end
22
22
 
23
23
  def director
24
+ puts self.inspect if self.group_name.nil?
24
25
  "#{Odania.varnish_sanitize(self.group_name)}_director"
25
26
  end
26
27
  end
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
3
  class Style
4
- attr_accessor :name, :entry_point, :direct, :dynamic
4
+ attr_accessor :name, :entry_point, :direct, :dynamic, :assets
5
5
 
6
6
  def initialize(name)
7
7
  self.name = name
@@ -23,26 +23,38 @@ module Odania
23
23
  dynamic_data[web_url] = page.dump
24
24
  end
25
25
 
26
+ asset_data = {}
27
+ assets.each_pair do |asset_url, page|
28
+ asset_data[asset_url] = page.dump
29
+ end
30
+
26
31
  {
27
32
  'entry_point' => entry_point,
28
33
  'direct' => direct_data,
29
- 'dynamic' => dynamic_data
34
+ 'dynamic' => dynamic_data,
35
+ 'assets' => asset_data
30
36
  }
31
37
  end
32
38
 
33
- def load(data)
39
+ def load(data, group_name)
34
40
  reset
35
41
  self.entry_point = data['entry_point'] unless data['entry_point'].nil?
36
42
 
37
43
  unless data['direct'].nil?
38
44
  data['direct'].each_pair do |name, data|
39
- self.direct[name].load(data)
45
+ self.direct[name].load(data, group_name)
40
46
  end
41
47
  end
42
48
 
43
49
  unless data['dynamic'].nil?
44
50
  data['dynamic'].each_pair do |name, data|
45
- self.dynamic[name].load(data)
51
+ self.dynamic[name].load(data, group_name)
52
+ end
53
+ end
54
+
55
+ unless data['assets'].nil?
56
+ data['assets'].each_pair do |name, data|
57
+ self.assets[name].load(data, group_name)
46
58
  end
47
59
  end
48
60
  end
@@ -53,6 +65,7 @@ module Odania
53
65
  self.entry_point = nil
54
66
  self.direct = Hash.new { |hash, key| hash[key] = Page.new }
55
67
  self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
68
+ self.assets = Hash.new { |hash, key| hash[key] = Page.new }
56
69
  @plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
57
70
  end
58
71
  end
@@ -31,25 +31,19 @@ module Odania
31
31
  result
32
32
  end
33
33
 
34
- def add_internal(web_url, group_name, plugin_url, plugin_name)
35
- result = true
36
- result = false unless self.assets.key? web_url
37
- self.assets[web_url].group_name = group_name
38
- self.assets[web_url].plugin_url = plugin_url
39
- @plugins[:asset][web_url] << plugin_name
40
- result
41
- end
42
-
43
34
  def get_redirects
44
- return {} if self.config.nil?
45
- return {} if self.config['redirects'].nil?
46
- self.config['redirects']
35
+ return {} if self.redirects.nil?
36
+ self.redirects
47
37
  end
48
38
 
49
39
  def plugins(type, key)
50
40
  @plugins[type][key]
51
41
  end
52
42
 
43
+ def assets
44
+ self.internal.assets
45
+ end
46
+
53
47
  def dump
54
48
  direct_data = {}
55
49
  direct.each_pair do |web_url, page|
@@ -93,7 +87,7 @@ module Odania
93
87
  end
94
88
  end
95
89
 
96
- self.internal.load(data['internal']) unless data['internal'].nil?
90
+ self.internal.load(data['internal'], group_name) unless data['internal'].nil?
97
91
  unless data['redirects'].nil?
98
92
  data['redirects'].each_pair do |src_url, target_url|
99
93
  duplicates[:redirect] << src_url if self.redirects.key? src_url
@@ -0,0 +1,41 @@
1
+ module Odania
2
+ class GenerateSiteAssetsVcl
3
+ attr_accessor :domain, :template, :default_subdomains
4
+
5
+ def default_subdomain_for(domain)
6
+ return self.default_subdomains[domain.name] unless self.default_subdomains[domain.name].nil?
7
+ return self.default_subdomains['_general'] unless self.default_subdomains['_general'].nil?
8
+ 'www'
9
+ end
10
+
11
+ def template_url_for(domain, page)
12
+ "&domain=#{domain.name}"+
13
+ "&plugin_url=#{page.plugin_url.nil? ? '/' : page.plugin_url}"+
14
+ "&group_name=#{Odania.varnish_sanitize(page.group_name)}"
15
+ end
16
+
17
+ def prepare_url(url)
18
+ return "/#{url}" unless '/'.eql? url[0]
19
+ url
20
+ end
21
+
22
+ def general_subdomain
23
+ self.domain['_general']
24
+ end
25
+
26
+ def initialize(domain, default_subdomains)
27
+ self.domain = domain
28
+ self.default_subdomains = default_subdomains
29
+ self.template = File.new("#{BASE_DIR}/templates/varnish/site_assets.vcl.erb").read
30
+ self.template = File.new("#{BASE_DIR}/templates/varnish/general_site_assets.vcl.erb").read if '_general'.eql? domain.name
31
+ end
32
+
33
+ def render
34
+ Erubis::Eruby.new(self.template).result(binding)
35
+ end
36
+
37
+ def write(out_dir)
38
+ File.write("#{out_dir}/sites/#{self.domain.name}_assets.vcl", self.render)
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative 'generate_site_vcl'
2
+ require_relative 'generate_site_assets_vcl'
2
3
 
3
4
  module Odania
4
5
  class GenerateSitesVcl
@@ -21,6 +22,9 @@ module Odania
21
22
  self.domains.each_pair do |domain_name, domain|
22
23
  out = GenerateSiteVcl.new(domain, default_subdomains)
23
24
  out.write out_dir
25
+
26
+ out = GenerateSiteAssetsVcl.new(domain, default_subdomains)
27
+ out.write out_dir
24
28
  end
25
29
  end
26
30
  end
@@ -1,3 +1,3 @@
1
1
  module Odania
2
- VERSION = '0.0.17'
2
+ VERSION = '0.0.18'
3
3
  end
data/lib/odania.rb CHANGED
@@ -17,7 +17,6 @@ module Odania
17
17
 
18
18
  autoload :Config, 'odania/config'
19
19
  autoload :Consul, 'odania/consul'
20
- autoload :Erb, 'odania/erb'
21
20
  autoload :Plugin, 'odania/plugin'
22
21
  autoload :Varnish, 'odania/varnish'
23
22
 
@@ -18,6 +18,10 @@ sub vcl_recv {
18
18
  std.log("template partial identified! Page:" + req.url);
19
19
  set req.backend_hint = core_backend_director.backend();
20
20
  return (hash);
21
+ } else if (req.url ~ "^/template/page") {
22
+ std.log("template page identified! Page:" + req.url);
23
+ set req.backend_hint = core_backend_director.backend();
24
+ return (hash);
21
25
  }
22
26
  }
23
27
 
@@ -0,0 +1,21 @@
1
+ vcl 4.0;
2
+ # generated varnish config: <%= ENVIRONMENT %>
3
+ # local test: <%= LOCAL_TEST_MODE ? 'ENABLED' : 'DISABLED' %>
4
+
5
+ sub vcl_recv {
6
+ std.log("pre varnish log info '<%= domain.name %>':" + req.http.host);
7
+ if (req.http.host ~ "<%= domain.name %>$") {
8
+ std.log("varnish log info '<%= domain.name %>':" + req.http.host);
9
+
10
+ <% general_subdomain.assets.each_pair do |url, page| %>
11
+ if (req.url ~ "^<%= prepare_url url %>") {
12
+ std.log("page identified '<%= subdomain.name %>.<%= domain.name %>' Page:'<%= url %>':" + req.url);
13
+
14
+ set req.backend_hint = <%= page.director %>.backend();
15
+ <% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
16
+
17
+ return (hash);
18
+ }
19
+ <% end %>
20
+ }
21
+ }
@@ -10,7 +10,8 @@ sub vcl_recv {
10
10
  if (req.http.host ~ "<%= domain.name %>$") {
11
11
  std.log("varnish log info '<%= domain.name %>':" + req.http.host);
12
12
 
13
- <% domain.subdomains.each_pair do |subdomain_name, subdomain| %>
13
+ <% domain.subdomains.each_pair do |subdomain_name, subdomain|
14
+ next if '_general'.eql? subdomain_name %>
14
15
  <%= is_first ? '' : 'else ' %>if (req.http.host ~ "^<%= subdomain.name %>.<%= domain.name %>$") {
15
16
  std.log("subdomain identified '<%= subdomain.name %>.<%= domain.name %>':" + req.http.host + " url: " + req.url );
16
17
 
@@ -44,12 +45,41 @@ sub vcl_recv {
44
45
  <% is_first = false %>
45
46
  <% end %>
46
47
 
48
+ # Important: This needs to be directly after the subdomain config
47
49
  <%= is_first ? '' : 'else' %> {
48
- # Redirect to default
50
+ # Redirect to default subdomain
49
51
  std.log("varnish log info 'redirect to default':" + req.url);
50
52
  set req.http.Location = "http://<%= default_subdomain_for(domain) %>.<%= domain.name %>" + req.url;
51
53
  return (synth(750, "Permanently moved"));
52
54
  }
55
+
56
+ # General part
57
+ <% domain.get_redirects.each_pair do |src, target| %>
58
+ if (req.url ~ "<%= src %>") {
59
+ std.log("general redirect identified '<%= domain.name %>' src:'<%= src %>':" + req.url);
60
+ set req.http.Location = "<%= target %>";
61
+ return (synth(750, "Permanently moved"));
62
+ }
63
+ <% end %>
64
+
65
+ <% subdomain = domain.subdomains['_general'] %>
66
+ <% %w(direct dynamic).each do |type| %>
67
+ <% subdomain[type].each_pair do |url, page| %>
68
+ if (req.url ~ "^<%= prepare_url url %>") {
69
+ std.log("page identified '<%= subdomain.name %>.<%= domain.name %>' Page:'<%= url %>':" + req.url);
70
+
71
+ <% if 'direct'.eql? type %>
72
+ set req.backend_hint = <%= page.director %>.backend();
73
+ <% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
74
+ <% else %>
75
+ set req.backend_hint = core_backend_director.backend();
76
+ set req.url = "/template/page?req_url=" + req.url + "&req_host=" + req.http.host + "<%= template_url_for(domain, page) %>";
77
+ <% end %>
78
+
79
+ return (hash);
80
+ }
81
+ <% end %>
82
+ <% end %>
53
83
  }
54
84
  }
55
85
 
@@ -0,0 +1,34 @@
1
+ <%
2
+ is_first = true
3
+ %>
4
+ vcl 4.0;
5
+ # generated varnish config: <%= ENVIRONMENT %>
6
+ # local test: <%= LOCAL_TEST_MODE ? 'ENABLED' : 'DISABLED' %>
7
+
8
+ sub vcl_recv {
9
+ std.log("pre varnish log info '<%= domain.name %>':" + req.http.host);
10
+ if (req.http.host ~ "<%= domain.name %>$") {
11
+ std.log("varnish log info '<%= domain.name %>':" + req.http.host);
12
+
13
+ <% domain.subdomains.each_pair do |subdomain_name, subdomain| %>
14
+ <% unless '_general'.eql? subdomain_name %><%= is_first ? '' : 'else ' %>if (req.http.host ~ "^<%= subdomain.name %>.<%= domain.name %>$") {<% end %>
15
+ std.log("subdomain identified '<%= subdomain.name %>.<%= domain.name %>':" + req.http.host + " url: " + req.url );
16
+
17
+ <% subdomain.assets.each_pair do |url, page| %>
18
+ if (req.url ~ "^<%= prepare_url url %>") {
19
+ std.log("page identified '<%= subdomain.name %>.<%= domain.name %>' Page:'<%= url %>':" + req.url);
20
+
21
+ set req.backend_hint = <%= page.director %>.backend();
22
+ <% unless page.plugin_url.nil? %>set req.url = "<%= page.plugin_url %>";<% end %>
23
+
24
+ return (hash);
25
+ }
26
+ <% end %>
27
+
28
+ <% unless '_general'.eql? subdomain_name %>
29
+ }
30
+ <% is_first = false %>
31
+ <% end %>
32
+ <% end %>
33
+ }
34
+ }
@@ -6,5 +6,6 @@ vcl 4.0;
6
6
 
7
7
  # Sites
8
8
  <% domains.each_pair do |domain_name, domain| %>
9
+ include "/etc/varnish/sites/<%= domain_name %>_assets.vcl";
9
10
  include "/etc/varnish/sites/<%= domain_name %>.vcl";
10
11
  <% end %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odania
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Petersen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-20 00:00:00.000000000 Z
11
+ date: 2016-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,7 +184,6 @@ files:
184
184
  - lib/odania/config/style.rb
185
185
  - lib/odania/config/sub_domain.rb
186
186
  - lib/odania/consul.rb
187
- - lib/odania/erb.rb
188
187
  - lib/odania/plugin.rb
189
188
  - lib/odania/plugin_config/base.rb
190
189
  - lib/odania/varnish.rb
@@ -193,6 +192,7 @@ files:
193
192
  - lib/odania/varnish/generators/generate_default_vcl.rb
194
193
  - lib/odania/varnish/generators/generate_general_vcl.rb
195
194
  - lib/odania/varnish/generators/generate_redirects_vcl.rb
195
+ - lib/odania/varnish/generators/generate_site_assets_vcl.rb
196
196
  - lib/odania/varnish/generators/generate_site_vcl.rb
197
197
  - lib/odania/varnish/generators/generate_sites_vcl.rb
198
198
  - lib/odania/version.rb
@@ -201,7 +201,6 @@ files:
201
201
  - spec/fixtures/plugin_config_1.json
202
202
  - spec/lib/odania/config/global_config_spec.rb
203
203
  - spec/lib/odania/config/plugin_config_spec.rb
204
- - spec/lib/odania/erb_spec.rb
205
204
  - spec/lib/odania/plugin_spec.rb
206
205
  - spec/lib/odania/varnish_spec.rb
207
206
  - spec/lib/odania_spec.rb
@@ -214,8 +213,10 @@ files:
214
213
  - templates/varnish/default.vcl.erb
215
214
  - templates/varnish/general.vcl.erb
216
215
  - templates/varnish/general_site.vcl.erb
216
+ - templates/varnish/general_site_assets.vcl.erb
217
217
  - templates/varnish/redirects.vcl.erb
218
218
  - templates/varnish/site.vcl.erb
219
+ - templates/varnish/site_assets.vcl.erb
219
220
  - templates/varnish/sites.vcl.erb
220
221
  - templates/varnish/websocker.vcl.erb
221
222
  homepage: http://www.odania.com
@@ -252,7 +253,6 @@ test_files:
252
253
  - spec/fixtures/plugin_config_1.json
253
254
  - spec/lib/odania/config/global_config_spec.rb
254
255
  - spec/lib/odania/config/plugin_config_spec.rb
255
- - spec/lib/odania/erb_spec.rb
256
256
  - spec/lib/odania/plugin_spec.rb
257
257
  - spec/lib/odania/varnish_spec.rb
258
258
  - spec/lib/odania_spec.rb
data/lib/odania/erb.rb DELETED
@@ -1,154 +0,0 @@
1
- module Odania
2
- class Erb
3
- attr_accessor :variables, :config, :page, :asset
4
-
5
- def initialize(template, domain, partials, group_name, req_host)
6
- @template = template
7
-
8
- self.variables = Variables.new(template, domain, partials, group_name, req_host)
9
- self.config = Config.new self.variables
10
- self.page = Page.new self.variables
11
- self.asset = Asset.new self.variables
12
-
13
- if LOCAL_TEST_MODE
14
- data = "\n<!-- Domain: #{domain} -->"
15
- data += "\n<!-- Group Name: #{group_name} -->"
16
- data += "\n<!-- Request Host: #{req_host} -->"
17
- data += "\n<!-- Base Domain: #{self.variables.base_domain} -->"
18
- data += "\n<!-- Partials: #{JSON.pretty_generate(self.variables.partials)} -->"
19
- data += "\n<!-- Config: #{JSON.pretty_generate(self.variables.config)} -->"
20
- data += "\n<!-- SubDomain Config: #{JSON.pretty_generate(self.variables.subdomain_config)} -->"
21
- #data += "\n<!-- Global Config: #{JSON.pretty_generate(self.variables.global_config)} -->"
22
- @template += data.html_safe
23
- end
24
- end
25
-
26
- def render
27
- ERB.new(@template).result(binding)
28
- end
29
-
30
- class Variables
31
- attr_accessor :template, :config, :subdomain_config, :global_config, :domain
32
- attr_accessor :base_domain, :partials, :group_name, :req_host
33
-
34
- def initialize(template, domain, partials, group_name, req_host)
35
- self.template = template
36
- self.global_config = Odania.plugin.get_global_config
37
-
38
- domain_info = PublicSuffix.parse(domain)
39
- self.config, self.base_domain = Odania.plugin.get_domain_config_for domain_info.domain, self.global_config
40
- self.subdomain_config = self.config[domain_info.trd] unless domain_info.trd.nil?
41
- self.subdomain_config = self.config['_general'] if self.subdomain_config.nil?
42
- self.subdomain_config = {} if self.subdomain_config.nil?
43
-
44
- self.domain = domain
45
- self.partials = partials
46
- self.group_name = group_name
47
- self.req_host = req_host
48
- end
49
-
50
- def get_partial(page)
51
- get_specific %w(internal partials), page
52
- end
53
-
54
- def get_config_key(key)
55
- get_specific %w(config), key
56
- end
57
-
58
- def notify_error_async(type, key, data)
59
- data = {
60
- domain: self.domain,
61
- base_domain: self.base_domain,
62
- group_name: self.group_name,
63
- req_host: self.req_host,
64
- type: type,
65
- key: key,
66
- data: data
67
- }
68
- ProcessErrorJob.perform_later data
69
- end
70
-
71
- private
72
-
73
- def get_specific(part, page)
74
- subdomain = req_host.gsub(".#{domain}", '')
75
-
76
- # subdomain specific layouts
77
- result = retrieve_hash_path global_config, ['domains', domain, subdomain] + part + [page]
78
- return result unless result.nil?
79
-
80
- # domain specific layouts
81
- result = retrieve_hash_path global_config, ['domains', domain, '_general'] + part + [page]
82
- return result unless result.nil?
83
-
84
- # general layouts
85
- result = retrieve_hash_path global_config, %w(domains _general _general) + part + [page]
86
- return result unless result.nil?
87
-
88
- nil
89
- end
90
-
91
- def retrieve_hash_path(hash, path)
92
- key = path.shift
93
-
94
- return nil until hash.has_key? key
95
- return hash[key] if path.empty?
96
- retrieve_hash_path hash[key], path
97
- end
98
- end
99
-
100
- class Config
101
- def initialize(variables)
102
- @variables = variables
103
- end
104
-
105
- def get(key)
106
- val = @variables.get_config_key(key)
107
- return val unless val.nil?
108
- "--- Config Key Not found: #{key} ---"
109
-
110
- @variables.notify_error_async :config, 'Key not found', key
111
- end
112
- end
113
-
114
- class Page
115
- def initialize(variables)
116
- @variables = variables
117
- end
118
-
119
- def get(page)
120
- if not @variables.partials[page].nil?
121
- "<!-- Page: #{page} -->\n<esi:include src=\"#{@variables.partials[page]}\"/>\n<!-- End Page: #{page} -->"
122
- else
123
- partial = @variables.get_partial(page)
124
-
125
- if partial.nil?
126
- #"<!-- Page: #{page} -->\n<esi:include src=\"http://internal.core/template/partial/#{page}?domain=#{@variables.domain}&group_name=#{@variables.group_name}\"/>\n<!-- End Page: #{page} -->"
127
- "\n\n\n<pre>UNHANDLED PAGE: #{page} !!!!!!!!!!!!!!!!!!!!</pre>\n\n\n"
128
- else
129
- "<!-- Page: #{page} -->\n<esi:include src=\"http://internal.core/template/partial/#{page}?domain=#{@variables.domain}&group_name=#{@variables.group_name}&plugin_url=#{partial['plugin_url']}&req_host=#{@variables.req_host}\"/>\n<!-- End Page: #{page} -->"
130
- end
131
- end
132
- end
133
- end
134
-
135
- class Asset
136
- def initialize(variables)
137
- @variables = variables
138
- end
139
-
140
- def get(asset)
141
- asset_url = get_asset_url(@variables.domain)
142
- asset_url = "//#{asset_url}" unless asset_url.include? '//'
143
- "#{asset_url}/#{asset}"
144
- end
145
-
146
- private
147
-
148
- def get_asset_url(domain)
149
- return @variables.subdomain_config['asset_url'] unless @variables.subdomain_config['asset_url'].nil?
150
- domain
151
- end
152
- end
153
- end
154
- end
@@ -1,16 +0,0 @@
1
- describe Odania::Erb do
2
- context 'render simple template' do
3
- let(:subject) {
4
- Odania::Erb.new('This is a very simple template', 'example.com', {}, 'odania-test', 'test.odania.com')
5
- }
6
-
7
- let(:global_cfg) {
8
- JSON.parse File.read("#{BASE_DIR}/spec/fixtures/global_config.json")
9
- }
10
-
11
- it 'renders simple template' do
12
- $consul_mock.config.set('global_plugins_config', global_cfg)
13
- expect(subject.render).to eq('This is a very simple template')
14
- end
15
- end
16
- end