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