redis_template_resolver 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +4 -0
- data/lib/redis_template_resolver.rb +7 -5
- data/redis_template_resolver.gemspec +2 -2
- data/spec/lib/redis_template_resolver_spec.rb +10 -10
- data/spec/spec_helper.rb +1 -1
- metadata +50 -66
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7e1d74c2a0de4bce0900b3e48ea86aea6ac0ca5
|
4
|
+
data.tar.gz: f3b0f2309e27627534fb4d6df1e28520276c2e95
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1a49d2eaa670d68a9f25d811de002bd4551cfa9fbfcfb5ac5417172983918c45884fe6d2696fba66bd6eb1ad2a71c100e670a821dc0df501a6c2ea400019cd55
|
7
|
+
data.tar.gz: 979f9d9c51be0c821558f8ae3b409687a227e375e368f7ada19639e2edb241a1e4106e4f0e03ef1863f8243c64573f2016edef9edf7ca40597808f585c906d72
|
data/CHANGELOG
CHANGED
@@ -148,18 +148,20 @@ class RedisTemplateResolver < ActionView::Resolver
|
|
148
148
|
|
149
149
|
Rails.logger.info "Fetching remote template from #{layout_url.inspect}"
|
150
150
|
|
151
|
-
response =
|
152
|
-
|
151
|
+
response = Curl.get( layout_url ) do |curl|
|
152
|
+
curl.timeout = self.http_timeout
|
153
|
+
end
|
154
|
+
response_body = response.body_str
|
153
155
|
|
154
|
-
Rails.logger.info "Got remote template response code #{response.
|
156
|
+
Rails.logger.info "Got remote template response code #{response.response_code} with body #{response_body.inspect}"
|
155
157
|
|
156
|
-
return nil if response.
|
158
|
+
return nil if response.response_code == 404
|
157
159
|
|
158
160
|
response_body = postprocess_template( response_body ) if respond_to?( :postprocess_template, true )
|
159
161
|
|
160
162
|
return response_body
|
161
163
|
|
162
|
-
rescue
|
164
|
+
rescue SocketError, Curl::Err::TimeoutError, Errno::ECONNREFUSED, TemplateRejectedError => e
|
163
165
|
Rails.logger.error e.message
|
164
166
|
return nil
|
165
167
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "redis_template_resolver"
|
3
|
-
s.version = "0.
|
3
|
+
s.version = "0.3.0"
|
4
4
|
s.homepage = "https://github.com/psd/redis_template_resolver"
|
5
5
|
s.summary = "A template resolver for rails that retrieves templates via http and caches them in redis"
|
6
6
|
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
|
19
19
|
s.add_runtime_dependency( "redis", "> 3.0.0" )
|
20
|
-
s.add_runtime_dependency( "
|
20
|
+
s.add_runtime_dependency( "curb", "> 0.8.0" )
|
21
21
|
s.add_runtime_dependency( "rails", "~> 3.2.6" )
|
22
22
|
s.add_runtime_dependency( "activesupport", ">3.2.0" )
|
23
23
|
|
@@ -12,11 +12,11 @@ describe ExampleClass do
|
|
12
12
|
let( :dummy_remote_template_with_html_escaped_tags ) { "dummy template {{flash}} {{body}} {{head}} {{headline}} {{title}}" }
|
13
13
|
|
14
14
|
let( :fake_httparty_response ) do
|
15
|
-
OpenStruct.new( :
|
15
|
+
OpenStruct.new( :response_code => 200, :body_str => dummy_remote_template )
|
16
16
|
end
|
17
17
|
|
18
18
|
let( :fake_httparty_response_with_html_escaped_tags ) do
|
19
|
-
OpenStruct.new( :
|
19
|
+
OpenStruct.new( :response_code => 200, :body_str => dummy_remote_template_with_html_escaped_tags )
|
20
20
|
end
|
21
21
|
|
22
22
|
let( :redis_connector ) do
|
@@ -47,7 +47,7 @@ describe ExampleClass do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it 'should continue processing if the guard function returns true' do
|
50
|
-
|
50
|
+
Curl.stub( :get => fake_httparty_response )
|
51
51
|
ExampleClass.any_instance.stub( :resolver_guard ).and_return( true )
|
52
52
|
result = subject.find_templates( "redis:template", "layouts", "", {} )
|
53
53
|
result.first.source.should == dummy_remote_template
|
@@ -74,7 +74,7 @@ describe ExampleClass do
|
|
74
74
|
context "if the template in the local cache is too old" do
|
75
75
|
before( :each ) do
|
76
76
|
Timecop.travel( described_class.local_cache_ttl.seconds.ago ) do
|
77
|
-
|
77
|
+
Curl.stub( :get ).and_return( fake_httparty_response )
|
78
78
|
subject.find_templates( name, prefix, partial, details )
|
79
79
|
end
|
80
80
|
end
|
@@ -89,7 +89,7 @@ describe ExampleClass do
|
|
89
89
|
before( :each ) do
|
90
90
|
target_time = described_class.local_cache_ttl - 2
|
91
91
|
Timecop.travel( target_time.seconds.ago ) do
|
92
|
-
|
92
|
+
Curl.stub( :get => fake_httparty_response )
|
93
93
|
subject.find_templates( name, prefix, partial, details )
|
94
94
|
end
|
95
95
|
end
|
@@ -109,7 +109,7 @@ describe ExampleClass do
|
|
109
109
|
|
110
110
|
context "if a template could be found in the redis cache" do
|
111
111
|
before( :each ) do
|
112
|
-
redis_connector.stub
|
112
|
+
redis_connector.stub( :get ).and_return( dummy_remote_template )
|
113
113
|
end
|
114
114
|
|
115
115
|
it "should store the template in the local cache for 60 seconds" do
|
@@ -126,7 +126,7 @@ describe ExampleClass do
|
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should not fall back to http" do
|
129
|
-
|
129
|
+
Curl.should_not_receive( :get )
|
130
130
|
subject.find_templates( name, prefix, partial, details )
|
131
131
|
end
|
132
132
|
|
@@ -134,12 +134,12 @@ describe ExampleClass do
|
|
134
134
|
|
135
135
|
context "if no template could be found in the redis cache" do
|
136
136
|
before( :each ) do
|
137
|
-
redis_connector.stub
|
137
|
+
redis_connector.stub( :get )
|
138
138
|
end
|
139
139
|
|
140
140
|
context "if the template could be retrieved via HTTP" do
|
141
141
|
before( :each ) do
|
142
|
-
|
142
|
+
Curl.stub( :get => fake_httparty_response )
|
143
143
|
end
|
144
144
|
|
145
145
|
it "should store the template in redis" do
|
@@ -164,7 +164,7 @@ describe ExampleClass do
|
|
164
164
|
|
165
165
|
context "if the template could not be retrieved via HTTP" do
|
166
166
|
before( :each ) do
|
167
|
-
|
167
|
+
Curl.stub( :get ).and_raise( Curl::Err::TimeoutError )
|
168
168
|
end
|
169
169
|
|
170
170
|
it "should use the default template" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,130 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_template_resolver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.0
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- ProSiebenSat.1 Ditital, Central Systems Architecture
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
prerelease: false
|
16
|
-
type: :runtime
|
17
14
|
name: redis
|
18
|
-
|
19
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
20
16
|
requirements:
|
21
|
-
- -
|
17
|
+
- - '>'
|
22
18
|
- !ruby/object:Gem::Version
|
23
19
|
version: 3.0.0
|
24
|
-
|
25
|
-
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>'
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
|
33
|
-
name: httparty
|
34
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
28
|
+
name: curb
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
|
-
- -
|
31
|
+
- - '>'
|
38
32
|
- !ruby/object:Gem::Version
|
39
33
|
version: 0.8.0
|
40
|
-
|
41
|
-
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>'
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 0.8.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
prerelease: false
|
48
|
-
type: :runtime
|
49
42
|
name: rails
|
50
|
-
|
51
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
52
44
|
requirements:
|
53
45
|
- - ~>
|
54
46
|
- !ruby/object:Gem::Version
|
55
47
|
version: 3.2.6
|
56
|
-
|
57
|
-
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 3.2.6
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
|
-
prerelease: false
|
64
|
-
type: :runtime
|
65
56
|
name: activesupport
|
66
|
-
|
67
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
68
58
|
requirements:
|
69
|
-
- -
|
59
|
+
- - '>'
|
70
60
|
- !ruby/object:Gem::Version
|
71
61
|
version: 3.2.0
|
72
|
-
|
73
|
-
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>'
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 3.2.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
prerelease: false
|
80
|
-
type: :development
|
81
70
|
name: rspec
|
82
|
-
|
83
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
|
-
- -
|
73
|
+
- - '>'
|
86
74
|
- !ruby/object:Gem::Version
|
87
75
|
version: 2.10.0
|
88
|
-
|
89
|
-
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>'
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: 2.10.0
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
|
-
prerelease: false
|
96
|
-
type: :development
|
97
84
|
name: simplecov
|
98
|
-
|
99
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - '>='
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0'
|
104
|
-
|
105
|
-
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
|
-
prerelease: false
|
112
|
-
type: :development
|
113
98
|
name: timecop
|
114
|
-
|
115
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
116
100
|
requirements:
|
117
|
-
- -
|
101
|
+
- - '>='
|
118
102
|
- !ruby/object:Gem::Version
|
119
103
|
version: '0'
|
120
|
-
|
121
|
-
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
|
-
description:
|
127
|
-
|
111
|
+
description: " A template resolver for rails 3.2. It retrieves templates via HTTP
|
112
|
+
\n and stores them in a redis instance, as well as in local caches. \n"
|
128
113
|
email:
|
129
114
|
- sven.riedel@prosiebensat1digital.de
|
130
115
|
executables: []
|
@@ -140,27 +125,26 @@ files:
|
|
140
125
|
- spec/spec_helper.rb
|
141
126
|
homepage: https://github.com/psd/redis_template_resolver
|
142
127
|
licenses: []
|
128
|
+
metadata: {}
|
143
129
|
post_install_message:
|
144
130
|
rdoc_options: []
|
145
131
|
require_paths:
|
146
132
|
- lib
|
147
133
|
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
134
|
requirements:
|
150
|
-
- -
|
135
|
+
- - '>='
|
151
136
|
- !ruby/object:Gem::Version
|
152
137
|
version: '0'
|
153
138
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
139
|
requirements:
|
156
|
-
- -
|
140
|
+
- - '>='
|
157
141
|
- !ruby/object:Gem::Version
|
158
142
|
version: '0'
|
159
143
|
requirements: []
|
160
144
|
rubyforge_project:
|
161
|
-
rubygems_version:
|
145
|
+
rubygems_version: 2.0.3
|
162
146
|
signing_key:
|
163
|
-
specification_version:
|
147
|
+
specification_version: 4
|
164
148
|
summary: A template resolver for rails that retrieves templates via http and caches
|
165
149
|
them in redis
|
166
150
|
test_files: []
|