responders 1.0.0 → 1.1.0
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/MIT-LICENSE +1 -1
- data/README.md +19 -1
- data/lib/responders/flash_responder.rb +4 -1
- data/lib/responders/location_responder.rb +26 -0
- data/lib/responders/version.rb +1 -1
- data/lib/responders.rb +1 -0
- data/test/flash_responder_test.rb +23 -2
- data/test/location_responder_test.rb +44 -0
- data/test/test_helper.rb +3 -4
- data/test/views/locations/new.html.erb +1 -0
- metadata +16 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afe9de77cd0ac2f430924b58d84e0cf582e3011c
|
4
|
+
data.tar.gz: e8771d1fb3bd0b9e0036a70b5aaf667528451e2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd38360684067e7b60ab94a362f438676b69ab4bb956ffdea5197f1831a4bdfadbc1bfd373395ca235124af57c863094935390362e333995a8614a3ad3fff98b
|
7
|
+
data.tar.gz: ddf8300eb26872a38e79fe55ca308120d9b3c0f0ec3e80aaf44a8337f2ea54d4b515151adccda351b59fb519db182e49e202793be6634c21f831bc0e891009ce
|
data/CHANGELOG.md
CHANGED
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright 2009-
|
1
|
+
Copyright 2009-2014 Plataforma Tecnologia. http://blog.plataformatec.com.br
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -60,6 +60,24 @@ You can also have embedded HTML. Just create a `_html` scope.
|
|
60
60
|
|
61
61
|
See also the `namespace_lookup` option to search the full hierarchy of possible keys.
|
62
62
|
|
63
|
+
### Location Responder
|
64
|
+
|
65
|
+
This responder allows you to use callable objects as the redirect location.
|
66
|
+
Useful when you want to use the `respond_with` method with
|
67
|
+
a custom route that requires persisted objects, but the validation may fail.
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
class ThingsController < ApplicationController
|
71
|
+
responders :location, :flash
|
72
|
+
respond_to :html
|
73
|
+
|
74
|
+
def create
|
75
|
+
@thing = Things.create(params[:thing])
|
76
|
+
respond_with @thing, location: -> { thing_path(@thing) }
|
77
|
+
end
|
78
|
+
end
|
79
|
+
```
|
80
|
+
|
63
81
|
### HttpCacheResponder
|
64
82
|
|
65
83
|
Automatically adds Last-Modified headers to API requests. This
|
@@ -168,4 +186,4 @@ If you discover any bugs or want to drop a line, feel free to create an issue on
|
|
168
186
|
|
169
187
|
http://github.com/plataformatec/responders/issues
|
170
188
|
|
171
|
-
MIT License. Copyright 2009-
|
189
|
+
MIT License. Copyright 2009-2014 Plataforma Tecnologia. http://blog.plataformatec.com.br
|
@@ -89,7 +89,10 @@ module Responders
|
|
89
89
|
|
90
90
|
self.flash_keys = [ :notice, :alert ]
|
91
91
|
self.namespace_lookup = false
|
92
|
-
self.helper = Object.new.extend(
|
92
|
+
self.helper = Object.new.extend(
|
93
|
+
ActionView::Helpers::TranslationHelper,
|
94
|
+
ActionView::Helpers::TagHelper
|
95
|
+
)
|
93
96
|
|
94
97
|
def initialize(controller, resources, options={})
|
95
98
|
super
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Responders
|
2
|
+
# Responder to accept callable objects as the redirect location.
|
3
|
+
# Useful when you want to use the <tt>respond_with</tt> method with
|
4
|
+
# a route that requires persisted objects, but the validation may fail.
|
5
|
+
#
|
6
|
+
# class ThingsController < ApplicationController
|
7
|
+
# responders :location, :flash
|
8
|
+
# respond_to :html
|
9
|
+
#
|
10
|
+
# def create
|
11
|
+
# @thing = Things.create(params[:thing])
|
12
|
+
# respond_with @thing, location: -> { thing_path(@thing) }
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
module LocationResponder
|
17
|
+
def initialize(controller, resources, options = {})
|
18
|
+
super
|
19
|
+
|
20
|
+
if options[:location].respond_to?(:call)
|
21
|
+
location = options.delete(:location)
|
22
|
+
options[:location] = location.call unless has_errors?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/responders/version.rb
CHANGED
data/lib/responders.rb
CHANGED
@@ -4,6 +4,7 @@ module Responders
|
|
4
4
|
autoload :FlashResponder, 'responders/flash_responder'
|
5
5
|
autoload :HttpCacheResponder, 'responders/http_cache_responder'
|
6
6
|
autoload :CollectionResponder, 'responders/collection_responder'
|
7
|
+
autoload :LocationResponder, 'responders/location_responder'
|
7
8
|
|
8
9
|
require 'responders/controller_method'
|
9
10
|
|
@@ -51,6 +51,12 @@ class AddressesController < ApplicationController
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
class PolymorphicAddesssController < AddressesController
|
55
|
+
def create
|
56
|
+
respond_with(User.new, Address.new)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
54
60
|
module Admin
|
55
61
|
class AddressesController < ::AddressesController
|
56
62
|
end
|
@@ -185,9 +191,10 @@ class FlashResponderTest < ActionController::TestCase
|
|
185
191
|
assert_not_flash_now :failure
|
186
192
|
end
|
187
193
|
|
188
|
-
# If we have flash.now, it's always marked as used.
|
194
|
+
# If we have flash.now, it's always marked as used. Rails 4.1 has string keys,
|
195
|
+
# whereas 3.2 and 4.0 has symbols, so we need to test both.
|
189
196
|
def assert_flash_now(k)
|
190
|
-
assert flash.used_keys.include?(k.to_sym),
|
197
|
+
assert flash.used_keys.include?(k.to_sym) || flash.used_keys.include?(k.to_s),
|
191
198
|
"Expected #{k} to be in flash.now, but it's not."
|
192
199
|
end
|
193
200
|
|
@@ -237,3 +244,17 @@ class NamespacedFlashResponderTest < ActionController::TestCase
|
|
237
244
|
assert_equal nil, flash[:notice]
|
238
245
|
end
|
239
246
|
end
|
247
|
+
|
248
|
+
class PolymorhicFlashResponderTest < ActionController::TestCase
|
249
|
+
tests PolymorphicAddesssController
|
250
|
+
|
251
|
+
def setup
|
252
|
+
Responders::FlashResponder.flash_keys = [ :notice, :alert ]
|
253
|
+
@controller.stubs(:polymorphic_url).returns("/")
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_polymorhic_respond_with
|
257
|
+
post :create
|
258
|
+
assert_equal "Address was successfully created.", flash[:notice]
|
259
|
+
end
|
260
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class LocationResponder < ActionController::Responder
|
4
|
+
include Responders::LocationResponder
|
5
|
+
end
|
6
|
+
|
7
|
+
class LocationsController < ApplicationController
|
8
|
+
self.responder = LocationResponder
|
9
|
+
|
10
|
+
respond_to :html
|
11
|
+
before_filter :set_resource
|
12
|
+
|
13
|
+
def create
|
14
|
+
respond_with @resource, location: -> { 'given_location' }
|
15
|
+
end
|
16
|
+
|
17
|
+
def update
|
18
|
+
respond_with @resource, location: 'given_location'
|
19
|
+
end
|
20
|
+
|
21
|
+
def set_resource
|
22
|
+
@resource = Address.new
|
23
|
+
@resource.errors[:fail] << "FAIL" if params[:fail]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class LocationResponderTest < ActionController::TestCase
|
28
|
+
tests LocationsController
|
29
|
+
|
30
|
+
def test_redirects_to_block_location_on_success
|
31
|
+
post :create
|
32
|
+
assert_redirected_to 'given_location'
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_renders_page_on_fail
|
36
|
+
post :create, fail: true
|
37
|
+
assert @response.body.include?('new.html.erb')
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_redirects_to_plain_string
|
41
|
+
post :update
|
42
|
+
assert_redirected_to 'given_location'
|
43
|
+
end
|
44
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
|
3
|
-
Bundler.setup
|
4
|
-
require 'test/unit'
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'minitest/autorun'
|
5
3
|
require 'mocha/setup'
|
6
4
|
|
7
5
|
# Configure Rails
|
@@ -16,6 +14,7 @@ require 'rails/railtie'
|
|
16
14
|
$:.unshift File.expand_path('../../lib', __FILE__)
|
17
15
|
require 'responders'
|
18
16
|
|
17
|
+
I18n.enforce_available_locales = true
|
19
18
|
I18n.load_path << File.expand_path('../locales/en.yml', __FILE__)
|
20
19
|
I18n.reload!
|
21
20
|
|
@@ -0,0 +1 @@
|
|
1
|
+
new.html.erb
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: responders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- José Valim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
|
-
- - <
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '5'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.2'
|
30
|
-
- - <
|
30
|
+
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5'
|
33
33
|
description: A set of Rails responders to dry up your application
|
@@ -39,26 +39,29 @@ files:
|
|
39
39
|
- CHANGELOG.md
|
40
40
|
- MIT-LICENSE
|
41
41
|
- README.md
|
42
|
+
- lib/generators/rails/USAGE
|
42
43
|
- lib/generators/rails/responders_controller_generator.rb
|
43
44
|
- lib/generators/rails/templates/controller.rb
|
44
|
-
- lib/generators/rails/USAGE
|
45
45
|
- lib/generators/responders/install_generator.rb
|
46
|
+
- lib/responders.rb
|
46
47
|
- lib/responders/collection_responder.rb
|
47
48
|
- lib/responders/controller_method.rb
|
48
49
|
- lib/responders/flash_responder.rb
|
49
50
|
- lib/responders/http_cache_responder.rb
|
50
51
|
- lib/responders/locales/en.yml
|
52
|
+
- lib/responders/location_responder.rb
|
51
53
|
- lib/responders/version.rb
|
52
|
-
- lib/responders.rb
|
53
54
|
- test/collection_responder_test.rb
|
54
55
|
- test/controller_method_test.rb
|
55
56
|
- test/flash_responder_test.rb
|
56
57
|
- test/http_cache_responder_test.rb
|
57
58
|
- test/locales/en.yml
|
59
|
+
- test/location_responder_test.rb
|
58
60
|
- test/test_helper.rb
|
59
61
|
- test/views/addresses/create.js.erb
|
60
62
|
- test/views/addresses/edit.html.erb
|
61
63
|
- test/views/addresses/new.html.erb
|
64
|
+
- test/views/locations/new.html.erb
|
62
65
|
homepage: http://github.com/plataformatec/responders
|
63
66
|
licenses:
|
64
67
|
- MIT
|
@@ -69,17 +72,17 @@ require_paths:
|
|
69
72
|
- lib
|
70
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
71
74
|
requirements:
|
72
|
-
- -
|
75
|
+
- - ">="
|
73
76
|
- !ruby/object:Gem::Version
|
74
77
|
version: '0'
|
75
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
79
|
requirements:
|
77
|
-
- -
|
80
|
+
- - ">="
|
78
81
|
- !ruby/object:Gem::Version
|
79
82
|
version: '0'
|
80
83
|
requirements: []
|
81
84
|
rubyforge_project: responders
|
82
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.2.2
|
83
86
|
signing_key:
|
84
87
|
specification_version: 4
|
85
88
|
summary: A set of Rails responders to dry up your application
|
@@ -89,7 +92,9 @@ test_files:
|
|
89
92
|
- test/flash_responder_test.rb
|
90
93
|
- test/http_cache_responder_test.rb
|
91
94
|
- test/locales/en.yml
|
95
|
+
- test/location_responder_test.rb
|
92
96
|
- test/test_helper.rb
|
93
97
|
- test/views/addresses/create.js.erb
|
94
98
|
- test/views/addresses/edit.html.erb
|
95
99
|
- test/views/addresses/new.html.erb
|
100
|
+
- test/views/locations/new.html.erb
|