ettu 4.1.4 → 4.1.6
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.
- checksums.yaml +7 -0
- data/README.md +4 -2
- data/lib/ettu.rb +0 -1
- data/lib/ettu/fresh_when.rb +3 -13
- data/lib/ettu/railtie.rb +6 -19
- data/lib/ettu/version.rb +1 -1
- data/spec/fixtures.rb +5 -2
- data/spec/fresh_when_spec.rb +6 -28
- data/spec/spec_helper.rb +7 -0
- metadata +29 -41
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d8d18e525d41372caf60474f3435bc05ff4ba62b
|
4
|
+
data.tar.gz: b2dac6236a6461d688f2f1e60ffaf4dc6cd9965c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d52066c819518f1414d97a881f674fe520cf1ec063b85807cc93c606ddb726652a008361ae92663faa9c339368d6f5feb1ccef170faf090e4ff3f0fd5f335b9a
|
7
|
+
data.tar.gz: 0e31c5edb6656cebc3bc306f7e65a70c0c373e929c7c6b63570db5e246bc57c39c10e0d4aa37b2eb94cd97d2ed1e627a030f05d91e7746f48b7988f5f8f3f6b2
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Ettu
|
2
2
|
====
|
3
3
|
|
4
|
+
[](https://travis-ci.org/cloudspace/ettu)
|
5
|
+
|
4
6
|
Using Rails 4's `stale?` or `fresh_when`? Are your users seeing old view
|
5
7
|
code even after new deploys? The Rails way `fresh_when(@product)`
|
6
8
|
doesn't account for changes in your view code, you have to do it
|
@@ -101,11 +103,11 @@ won't cause problems if it's not installed.
|
|
101
103
|
RAILS_ENV=development Issues
|
102
104
|
----------------------------
|
103
105
|
|
104
|
-
Until [rails/rails#
|
106
|
+
Until [rails/rails#11768](https://github.com/rails/rails/pull/11768)
|
105
107
|
gets merged in, Ettu will not be able to detect changes in templates
|
106
108
|
while in the **development** environment. This is not an issue that
|
107
109
|
affects staging or production, because the template cache will be
|
108
|
-
|
110
|
+
flushed after each deploy.
|
109
111
|
|
110
112
|
In the mean time, you can enable a monkey-patch with:
|
111
113
|
|
data/lib/ettu.rb
CHANGED
@@ -2,7 +2,6 @@ require 'active_support/concern'
|
|
2
2
|
require 'active_support/ordered_options'
|
3
3
|
require 'active_support/core_ext/object/blank'
|
4
4
|
require 'active_support/core_ext/object/try'
|
5
|
-
require 'active_support/core_ext/module/aliasing'
|
6
5
|
|
7
6
|
require 'ettu/version'
|
8
7
|
require 'ettu/configuration'
|
data/lib/ettu/fresh_when.rb
CHANGED
@@ -2,22 +2,12 @@ class Ettu
|
|
2
2
|
module FreshWhen
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def fresh_when_with_ettu(record_or_options, additional_options = {})
|
12
|
-
ettu = ettu_instance(record_or_options, additional_options, self)
|
5
|
+
def fresh_when(record_or_options, additional_options = {})
|
6
|
+
ettu = Ettu.new record_or_options, additional_options, self
|
13
7
|
|
14
8
|
ettu_params = {etag: ettu.etags, last_modified: ettu.last_modified}
|
15
9
|
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
def ettu_instance(record_or_options, additional_options, controller)
|
20
|
-
Ettu.new record_or_options, additional_options, controller
|
10
|
+
super nil, ettu.options.merge(ettu_params)
|
21
11
|
end
|
22
12
|
end
|
23
13
|
end
|
data/lib/ettu/railtie.rb
CHANGED
@@ -5,34 +5,21 @@ class Ettu
|
|
5
5
|
|
6
6
|
unless app.config.ettu.disabled
|
7
7
|
require 'ettu'
|
8
|
-
|
8
|
+
ActiveSupport.on_load :action_controller do
|
9
|
+
ActionController::Base.send :include, FreshWhen
|
10
|
+
end
|
9
11
|
|
12
|
+
if app.config.ettu.development_hack
|
10
13
|
class BlackHole < Hash
|
11
|
-
def []=(
|
14
|
+
def []=(*); end
|
12
15
|
end
|
13
|
-
module EtagBuster
|
14
|
-
extend ActiveSupport::Concern
|
15
|
-
included do
|
16
|
-
def fresh_when(*args); end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
16
|
module ::ActionView
|
21
17
|
class Digestor
|
22
18
|
@@cache = BlackHole.new
|
23
19
|
end
|
24
20
|
end
|
25
|
-
ActiveSupport.on_load :action_controller do
|
26
|
-
ActionController::Base.send :include, EtagBuster
|
27
|
-
end
|
28
|
-
|
29
|
-
else
|
30
|
-
|
31
|
-
ActiveSupport.on_load :action_controller do
|
32
|
-
ActionController::Base.send :include, FreshWhen
|
33
|
-
end
|
34
|
-
|
35
21
|
end
|
22
|
+
|
36
23
|
end
|
37
24
|
|
38
25
|
end
|
data/lib/ettu/version.rb
CHANGED
data/spec/fixtures.rb
CHANGED
data/spec/fresh_when_spec.rb
CHANGED
@@ -6,41 +6,19 @@ describe Ettu::FreshWhen do
|
|
6
6
|
Ettu.configure { |config| config.template_digestor = Digestor }
|
7
7
|
end
|
8
8
|
|
9
|
-
let(:ettu) { double }
|
10
9
|
let(:record) { Record.new(DateTime.now) }
|
11
10
|
let(:hash) { { random: true, options: true } }
|
12
11
|
subject(:controller) { Controller.new }
|
13
12
|
|
14
|
-
before(:each) do
|
15
|
-
controller.stub(ettu_instance: ettu)
|
16
|
-
ettu.stub(:etags)
|
17
|
-
ettu.stub(:last_modified)
|
18
|
-
ettu.stub(options: {})
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'calls Ettu#etags' do
|
22
|
-
ettu.should_receive(:etags)
|
23
|
-
controller.fresh_when record, hash
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'calls Ettu#last_modified' do
|
27
|
-
ettu.should_receive(:last_modified)
|
28
|
-
controller.fresh_when record, hash
|
29
|
-
end
|
30
|
-
|
31
13
|
it 'passes nil as the first argument to original fresh_when' do
|
32
|
-
controller.
|
33
|
-
|
34
|
-
|
35
|
-
controller.fresh_when record, hash
|
14
|
+
ret = controller.fresh_when record, hash
|
15
|
+
|
16
|
+
expect(ret[0]).to equal(nil)
|
36
17
|
end
|
37
18
|
|
38
19
|
it 'passes extra options to original fresh_when' do
|
39
|
-
controller.
|
40
|
-
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
controller.fresh_when record, hash
|
20
|
+
ret = controller.fresh_when record, hash
|
21
|
+
|
22
|
+
expect(ret[1]).to include_hash(hash)
|
45
23
|
end
|
46
24
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,13 @@
|
|
8
8
|
require 'date'
|
9
9
|
require 'active_support/ordered_options'
|
10
10
|
require 'securerandom'
|
11
|
+
RSpec::Matchers.define :include_hash do |expected|
|
12
|
+
match do |actual|
|
13
|
+
!actual.nil? &&
|
14
|
+
!actual.empty? &&
|
15
|
+
(actual.to_a & expected.to_a) == expected.to_a
|
16
|
+
end
|
17
|
+
end
|
11
18
|
|
12
19
|
require 'simplecov'
|
13
20
|
SimpleCov.start { add_filter '/spec/' }
|
metadata
CHANGED
@@ -1,96 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ettu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 4.1.4
|
4
|
+
version: 4.1.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Justin Ridgewell
|
9
|
-
autorequire:
|
8
|
+
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
17
16
|
requirements:
|
18
17
|
- - ~>
|
19
18
|
- !ruby/object:Gem::Version
|
20
19
|
version: '4.0'
|
21
|
-
|
22
|
-
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
|
-
none: false
|
28
|
-
prerelease: false
|
29
|
-
type: :runtime
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
|
-
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
33
30
|
requirements:
|
34
31
|
- - ~>
|
35
32
|
- !ruby/object:Gem::Version
|
36
33
|
version: '1.3'
|
37
|
-
|
38
|
-
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
37
|
requirements:
|
40
38
|
- - ~>
|
41
39
|
- !ruby/object:Gem::Version
|
42
40
|
version: '1.3'
|
43
|
-
none: false
|
44
|
-
prerelease: false
|
45
|
-
type: :development
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
|
-
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - '>='
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
|
-
none: false
|
54
43
|
requirement: !ruby/object:Gem::Requirement
|
55
44
|
requirements:
|
56
45
|
- - '>='
|
57
46
|
- !ruby/object:Gem::Version
|
58
47
|
version: '0'
|
59
|
-
none: false
|
60
|
-
prerelease: false
|
61
48
|
type: :development
|
62
|
-
|
63
|
-
name: rspec
|
49
|
+
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - '>='
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
|
-
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
70
57
|
requirement: !ruby/object:Gem::Requirement
|
71
58
|
requirements:
|
72
59
|
- - '>='
|
73
60
|
- !ruby/object:Gem::Version
|
74
61
|
version: '0'
|
75
|
-
none: false
|
76
|
-
prerelease: false
|
77
62
|
type: :development
|
78
|
-
|
79
|
-
name: simplecov
|
63
|
+
prerelease: false
|
80
64
|
version_requirements: !ruby/object:Gem::Requirement
|
81
65
|
requirements:
|
82
66
|
- - '>='
|
83
67
|
- !ruby/object:Gem::Version
|
84
68
|
version: '0'
|
85
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
86
71
|
requirement: !ruby/object:Gem::Requirement
|
87
72
|
requirements:
|
88
73
|
- - '>='
|
89
74
|
- !ruby/object:Gem::Version
|
90
75
|
version: '0'
|
91
|
-
none: false
|
92
|
-
prerelease: false
|
93
76
|
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
94
83
|
description: Account for js, css, and views when using ETags.
|
95
84
|
email: jridgewell@cloudspace.com
|
96
85
|
executables: []
|
@@ -118,7 +107,8 @@ files:
|
|
118
107
|
homepage: http://github.com/cloudspace/ettu
|
119
108
|
licenses:
|
120
109
|
- MIT
|
121
|
-
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
122
112
|
rdoc_options: []
|
123
113
|
require_paths:
|
124
114
|
- lib
|
@@ -127,18 +117,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
117
|
- - '>='
|
128
118
|
- !ruby/object:Gem::Version
|
129
119
|
version: '1.9'
|
130
|
-
none: false
|
131
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
121
|
requirements:
|
133
122
|
- - '>='
|
134
123
|
- !ruby/object:Gem::Version
|
135
124
|
version: '0'
|
136
|
-
none: false
|
137
125
|
requirements: []
|
138
|
-
rubyforge_project:
|
139
|
-
rubygems_version:
|
140
|
-
signing_key:
|
141
|
-
specification_version:
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.0.0
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
142
130
|
summary: Account for view code when using ETags.
|
143
131
|
test_files:
|
144
132
|
- spec/ettu_spec.rb
|