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