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 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
+ [![Build Status](https://travis-ci.org/cloudspace/ettu.png?branch=v3)](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#10791](https://github.com/rails/rails/pull/10791)
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
- recreated after each deploy.
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'
@@ -2,22 +2,12 @@ class Ettu
2
2
  module FreshWhen
3
3
  extend ActiveSupport::Concern
4
4
 
5
- included do
6
- alias_method_chain :fresh_when, :ettu
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
- fresh_when_without_ettu nil, ettu.options.merge(ettu_params)
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
- if app.config.ettu.development_hack
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 []=(k, v); end
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
@@ -1,3 +1,3 @@
1
1
  class Ettu
2
- VERSION = '4.1.4'
2
+ VERSION = '4.1.6'
3
3
  end
data/spec/fixtures.rb CHANGED
@@ -13,9 +13,12 @@ class Controller < Nester
13
13
  self.action_name = 'action_name'
14
14
  end
15
15
 
16
- def fresh_when(*args)
17
- :old_fresh_when
16
+ module Freshness
17
+ def fresh_when(*args)
18
+ [*args]
19
+ end
18
20
  end
21
+ include Freshness
19
22
 
20
23
  include ::Ettu::FreshWhen
21
24
  end
@@ -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.should_receive(:fresh_when_without_ettu) do |r, h|
33
- r.nil?
34
- end
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.should_receive(:fresh_when_without_ettu) do |r, h|
40
- hash.each_pair.all? do |k, v|
41
- h[k] == v
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
- prerelease:
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-07-18 00:00:00.000000000 Z
11
+ date: 2013-08-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - ~>
19
18
  - !ruby/object:Gem::Version
20
19
  version: '4.0'
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
33
30
  requirements:
34
31
  - - ~>
35
32
  - !ruby/object:Gem::Version
36
33
  version: '1.3'
37
- none: false
38
- requirement: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Dependency
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
- none: false
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
- - !ruby/object:Gem::Dependency
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
- none: false
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
- post_install_message:
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: 1.8.24
140
- signing_key:
141
- specification_version: 3
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