responders 0.6.0 → 0.6.1
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.
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile +10 -0
- data/README.rdoc +1 -1
- data/Rakefile +0 -1
- data/lib/generators/responders/install_generator.rb +33 -0
- data/lib/responders.rb +0 -1
- data/lib/responders/controller_method.rb +12 -1
- data/lib/responders/flash_responder.rb +1 -1
- data/lib/responders/http_cache_responder.rb +6 -6
- data/lib/responders/locales/en.yml +4 -4
- data/lib/responders/version.rb +1 -1
- data/test/controller_method_test.rb +1 -1
- data/test/flash_responder_test.rb +1 -1
- data/test/http_cache_responder_test.rb +4 -16
- data/test/test_helper.rb +5 -18
- metadata +5 -4
- data/lib/generators/responders_install_generator.rb +0 -23
data/CHANGELOG.rdoc
CHANGED
data/Gemfile
ADDED
data/README.rdoc
CHANGED
data/Rakefile
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Responders
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
def self.source_root
|
5
|
+
@_source_root ||= File.expand_path("..", __FILE__)
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Creates an initializer with default responder configuration and copy locale file"
|
9
|
+
|
10
|
+
def create_responder_file
|
11
|
+
create_file "lib/application_responder.rb", <<-RUBY
|
12
|
+
class ApplicationResponder < ActionController::Responder
|
13
|
+
include Responders::FlashResponder
|
14
|
+
include Responders::HttpCacheResponder
|
15
|
+
end
|
16
|
+
RUBY
|
17
|
+
end
|
18
|
+
|
19
|
+
def update_application_controller
|
20
|
+
prepend_file "app/controllers/application_controller.rb", %{require "application_responder"\n\n}
|
21
|
+
inject_into_class "app/controllers/application_controller.rb", "ApplicationController", <<-RUBY
|
22
|
+
self.responder = ApplicationResponder
|
23
|
+
respond_to :html
|
24
|
+
|
25
|
+
RUBY
|
26
|
+
end
|
27
|
+
|
28
|
+
def copy_locale
|
29
|
+
copy_file "../../responders/locales/en.yml", "config/locales/responders.en.yml"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/responders.rb
CHANGED
@@ -5,7 +5,6 @@ module Responders
|
|
5
5
|
autoload :HttpCacheResponder, 'responders/http_cache_responder'
|
6
6
|
|
7
7
|
require 'responders/controller_method'
|
8
|
-
ActionController::Base.extend Responders::ControllerMethod
|
9
8
|
|
10
9
|
class Railtie < ::Rails::Railtie
|
11
10
|
config.responders = ActiveSupport::OrderedOptions.new
|
@@ -32,4 +32,15 @@ module Responders
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
|
-
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Fix for Rails <= 3.0.0.beta3
|
38
|
+
require "action_controller/metal/responder"
|
39
|
+
|
40
|
+
class ActionController::Responder
|
41
|
+
def default_action
|
42
|
+
@action ||= ACTIONS_FOR_VERBS[request.request_method_symbol]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
ActionController::Base.extend Responders::ControllerMethod
|
@@ -23,22 +23,22 @@ module Responders
|
|
23
23
|
|
24
24
|
def do_http_cache!
|
25
25
|
timestamp = resources.flatten.map do |resource|
|
26
|
-
|
26
|
+
next unless resource.respond_to?(:updated_at)
|
27
|
+
resource.updated_at.utc
|
27
28
|
end.compact.max
|
28
29
|
|
29
|
-
controller.response.last_modified
|
30
|
+
controller.response.last_modified ||= timestamp if timestamp
|
30
31
|
|
31
32
|
head :not_modified if fresh = request.fresh?(controller.response)
|
32
33
|
fresh
|
33
34
|
end
|
34
35
|
|
35
36
|
def do_http_cache?
|
36
|
-
get? && @http_cache != false && ActionController::Base.perform_caching &&
|
37
|
-
!new_record? && controller.response.last_modified.nil?
|
37
|
+
get? && @http_cache != false && ActionController::Base.perform_caching && persisted? && resourceful?
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
resource.respond_to?(:
|
40
|
+
def persisted?
|
41
|
+
resource.respond_to?(:persisted?) ? resource.persisted? : true
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
@@ -2,9 +2,9 @@ en:
|
|
2
2
|
flash:
|
3
3
|
actions:
|
4
4
|
create:
|
5
|
-
notice: '{
|
5
|
+
notice: '%{resource_name} was successfully created.'
|
6
6
|
update:
|
7
|
-
notice: '{
|
7
|
+
notice: '%{resource_name} was successfully updated.'
|
8
8
|
destroy:
|
9
|
-
notice: '{
|
10
|
-
alert: '{
|
9
|
+
notice: '%{resource_name} was successfully destroyed.'
|
10
|
+
alert: '%{resource_name} could not be destroyed.'
|
data/lib/responders/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class HttpCacheResponder < ActionController::Responder
|
4
4
|
include Responders::HttpCacheResponder
|
@@ -17,9 +17,9 @@ class HttpCacheController < ApplicationController
|
|
17
17
|
respond_with [Model.new(Time.utc(2009)), Model.new(Time.utc(2008))]
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
20
|
+
def not_persisted
|
21
21
|
model = Model.new(Time.utc(2009))
|
22
|
-
model.
|
22
|
+
model.persisted = false
|
23
23
|
respond_with(model)
|
24
24
|
end
|
25
25
|
|
@@ -82,18 +82,6 @@ class HttpCacheResponderTest < ActionController::TestCase
|
|
82
82
|
assert_equal 200, @response.status
|
83
83
|
end
|
84
84
|
|
85
|
-
def test_does_not_set_cache_if_last_modified_already_set_in_response
|
86
|
-
get :single, :last_modified => true
|
87
|
-
assert_equal Time.utc(2008).httpdate, @response.headers["Last-Modified"]
|
88
|
-
assert_equal 200, @response.status
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_does_not_use_cache_if_last_modified_already_set_in_response
|
92
|
-
@request.env["HTTP_IF_MODIFIED_SINCE"] = Time.utc(2009, 6).httpdate
|
93
|
-
get :single, :last_modified => true
|
94
|
-
assert_equal 200, @response.status
|
95
|
-
end
|
96
|
-
|
97
85
|
def test_collection_chooses_the_latest_timestamp
|
98
86
|
get :collection
|
99
87
|
assert_equal Time.utc(2009).httpdate, @response.headers["Last-Modified"]
|
@@ -114,7 +102,7 @@ class HttpCacheResponderTest < ActionController::TestCase
|
|
114
102
|
end
|
115
103
|
|
116
104
|
def test_does_not_set_cache_for_new_records
|
117
|
-
get :
|
105
|
+
get :not_persisted
|
118
106
|
assert_nil @response.headers["Last-Modified"]
|
119
107
|
assert_equal "<xml />", @response.body
|
120
108
|
assert_equal 200, @response.status
|
data/test/test_helper.rb
CHANGED
@@ -1,20 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'bundler'
|
2
3
|
|
3
|
-
|
4
|
-
gem 'activemodel', '3.0.0.beta2'
|
5
|
-
gem 'actionpack', '3.0.0.beta2'
|
6
|
-
gem 'railties', '3.0.0.beta2'
|
7
|
-
|
8
|
-
begin
|
9
|
-
gem "test-unit"
|
10
|
-
rescue LoadError
|
11
|
-
end
|
12
|
-
|
13
|
-
begin
|
14
|
-
gem "ruby-debug"
|
15
|
-
require 'ruby-debug'
|
16
|
-
rescue LoadError
|
17
|
-
end
|
4
|
+
Bundler.setup
|
18
5
|
|
19
6
|
require 'test/unit'
|
20
7
|
require 'mocha'
|
@@ -52,10 +39,10 @@ class ActiveSupport::TestCase
|
|
52
39
|
end
|
53
40
|
|
54
41
|
class Model < Struct.new(:updated_at)
|
55
|
-
attr_writer :
|
42
|
+
attr_writer :persisted
|
56
43
|
|
57
|
-
def
|
58
|
-
@
|
44
|
+
def persisted?
|
45
|
+
defined?(@persisted) ? @persisted : true
|
59
46
|
end
|
60
47
|
|
61
48
|
def to_xml(*args)
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 6
|
8
|
-
-
|
9
|
-
version: 0.6.
|
8
|
+
- 1
|
9
|
+
version: 0.6.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Jos\xC3\xA9 Valim"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-05-24 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -28,13 +28,14 @@ extra_rdoc_files:
|
|
28
28
|
- README.rdoc
|
29
29
|
files:
|
30
30
|
- CHANGELOG.rdoc
|
31
|
+
- Gemfile
|
31
32
|
- MIT-LICENSE
|
32
33
|
- README.rdoc
|
33
34
|
- Rakefile
|
34
35
|
- lib/generators/rails/USAGE
|
35
36
|
- lib/generators/rails/responders_controller_generator.rb
|
36
37
|
- lib/generators/rails/templates/controller.rb
|
37
|
-
- lib/generators/
|
38
|
+
- lib/generators/responders/install_generator.rb
|
38
39
|
- lib/responders.rb
|
39
40
|
- lib/responders/controller_method.rb
|
40
41
|
- lib/responders/flash_responder.rb
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class RespondersInstallGenerator < Rails::Generators::Base
|
2
|
-
def self.source_root
|
3
|
-
@_source_root ||= File.expand_path("..", __FILE__)
|
4
|
-
end
|
5
|
-
|
6
|
-
desc "Creates an initializer with default responder configuration and copy locale file"
|
7
|
-
|
8
|
-
def create_responder_initializer
|
9
|
-
create_file "config/initializers/responders.rb", <<-FILE
|
10
|
-
class ApplicationResponder < ActionController::Responder
|
11
|
-
include Responders::FlashResponder
|
12
|
-
include Responders::HttpCacheResponder
|
13
|
-
end
|
14
|
-
|
15
|
-
ApplicationController.respond_to :html
|
16
|
-
ApplicationController.responder = ApplicationResponder
|
17
|
-
FILE
|
18
|
-
end
|
19
|
-
|
20
|
-
def copy_locale
|
21
|
-
copy_file "../responders/locales/en.yml", "config/locales/responders.en.yml"
|
22
|
-
end
|
23
|
-
end
|