ettu 4.1.4 → 4.1.6

Sign up to get free protection for your applications and to get access to all the features.
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