responders 2.0.2 → 2.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 -1
- data/README.md +34 -38
- data/lib/action_controller/respond_with.rb +2 -2
- data/lib/generators/rails/responders_controller_generator.rb +1 -25
- data/lib/generators/rails/templates/controller.rb +6 -4
- data/lib/generators/responders/install_generator.rb +8 -0
- data/lib/responders.rb +0 -6
- data/lib/responders/location_responder.rb +1 -1
- data/lib/responders/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06ba4b048f7ab149753ce1222674abcde97594ce
|
4
|
+
data.tar.gz: d10721b4e6683ecc3095d709134d9e8785909c7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89dbb2374f73e0090d5ef320ae5d52235a075de8f344475717c1dc45474d86a0a2fd8de8dd8d7a7661f166f014658841106635c57cf1dc9db36b1acea5ad37d5
|
7
|
+
data.tar.gz: 973bbda1f6a6b6b4f056a8a5615b170d22f0e954fb2b77625279347e23f85378100fbf1d3079897c69174b304132099ed77c29963741439466bc0fdaff3b7120
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 2.1.0
|
2
|
+
|
3
|
+
* No longer automatically set the responders generator as many projects may use this gem as a dependency. When upgrading, users will need to add `config.app_generators.scaffold_controller :responders_controller` to their application. The `responders:install` generator has been updated to automatically insert it in new applications
|
4
|
+
|
1
5
|
## 2.0.1
|
2
6
|
|
3
7
|
* Require `rails/railtie` explicitly before using it
|
@@ -8,7 +12,7 @@
|
|
8
12
|
|
9
13
|
* Import `respond_with` and class-level `respond_to` from Rails
|
10
14
|
* Support only Rails ~> 4.2
|
11
|
-
* `Responders::LocationResponder` is now included by
|
15
|
+
* `Responders::LocationResponder` is now included by the default responder (and therefore deprecated)
|
12
16
|
|
13
17
|
## 1.1.0
|
14
18
|
|
data/README.md
CHANGED
@@ -4,7 +4,18 @@
|
|
4
4
|
[](http://travis-ci.org/plataformatec/responders)
|
5
5
|
[](https://codeclimate.com/github/plataformatec/responders)
|
6
6
|
|
7
|
-
A set of responders modules to dry up your Rails
|
7
|
+
A set of responders modules to dry up your Rails 4.2+ app.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add the responders gem to your Gemfile:
|
12
|
+
|
13
|
+
gem "responders"
|
14
|
+
|
15
|
+
Update your bundle and run the install generator:
|
16
|
+
|
17
|
+
$ bundle install
|
18
|
+
$ rails g responders:install
|
8
19
|
|
9
20
|
## Responders Types
|
10
21
|
|
@@ -60,15 +71,27 @@ You can also have embedded HTML. Just create a `_html` scope.
|
|
60
71
|
|
61
72
|
See also the `namespace_lookup` option to search the full hierarchy of possible keys.
|
62
73
|
|
74
|
+
### HttpCacheResponder
|
75
|
+
|
76
|
+
Automatically adds Last-Modified headers to API requests. This
|
77
|
+
allows clients to easily query the server if a resource changed and if the client tries
|
78
|
+
to retrieve a resource that has not been modified, it returns not_modified status.
|
79
|
+
|
80
|
+
### CollectionResponder
|
81
|
+
|
82
|
+
Makes your create and update action redirect to the collection on success.
|
83
|
+
|
63
84
|
### LocationResponder
|
64
85
|
|
65
86
|
This responder allows you to use callable objects as the redirect location.
|
66
87
|
Useful when you want to use the `respond_with` method with
|
67
88
|
a custom route that requires persisted objects, but the validation may fail.
|
68
89
|
|
90
|
+
Note: this responder is included by default, and doesn't need to be included
|
91
|
+
on the top of your controller (including it will issue a deprecation warning).
|
92
|
+
|
69
93
|
```ruby
|
70
94
|
class ThingsController < ApplicationController
|
71
|
-
responders :location, :flash
|
72
95
|
respond_to :html
|
73
96
|
|
74
97
|
def create
|
@@ -78,46 +101,25 @@ class ThingsController < ApplicationController
|
|
78
101
|
end
|
79
102
|
```
|
80
103
|
|
81
|
-
### HttpCacheResponder
|
82
|
-
|
83
|
-
Automatically adds Last-Modified headers to API requests. This
|
84
|
-
allows clients to easily query the server if a resource changed and if the client tries
|
85
|
-
to retrieve a resource that has not been modified, it returns not_modified status.
|
86
|
-
|
87
|
-
### CollectionResponder
|
88
|
-
|
89
|
-
Makes your create and update action redirect to the collection on success.
|
90
|
-
|
91
104
|
## Configuring your own responder
|
92
105
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
gem install responders
|
97
|
-
```
|
98
|
-
|
99
|
-
In your Gemfile, add this line:
|
100
|
-
|
101
|
-
```ruby
|
102
|
-
gem 'responders'
|
103
|
-
```
|
104
|
-
|
105
|
-
Responders only provides a set of modules, to use them, you have to create your own
|
106
|
-
responder. This can be done inside the lib folder for example:
|
106
|
+
Responders only provides a set of modules and to use them you have to create your own
|
107
|
+
responder. After you run the install command, the following responder will be
|
108
|
+
generated in your application:
|
107
109
|
|
108
110
|
```ruby
|
109
|
-
# lib/
|
111
|
+
# lib/application_responder.rb
|
110
112
|
class AppResponder < ActionController::Responder
|
111
113
|
include Responders::FlashResponder
|
112
114
|
include Responders::HttpCacheResponder
|
113
115
|
end
|
114
116
|
```
|
115
117
|
|
116
|
-
|
118
|
+
Your application also needs to be configured to use it:
|
117
119
|
|
118
120
|
```ruby
|
119
121
|
# app/controllers/application_controller.rb
|
120
|
-
require "
|
122
|
+
require "application_responder"
|
121
123
|
|
122
124
|
class ApplicationController < ActionController::Base
|
123
125
|
self.responder = AppResponder
|
@@ -125,12 +127,6 @@ class ApplicationController < ActionController::Base
|
|
125
127
|
end
|
126
128
|
```
|
127
129
|
|
128
|
-
Or, for your convenience, just do:
|
129
|
-
|
130
|
-
```console
|
131
|
-
rails generate responders:install
|
132
|
-
```
|
133
|
-
|
134
130
|
## Controller method
|
135
131
|
|
136
132
|
This gem also includes the controller method `responders`, which allows you to cherry-pick which
|
@@ -168,14 +164,14 @@ Now you would see the message "bob@bob.com was successfully created" instead of
|
|
168
164
|
## Generator
|
169
165
|
|
170
166
|
This gem also includes a responders controller generator, so your scaffold can be customized
|
171
|
-
to use `respond_with` instead of default `respond_to` blocks.
|
172
|
-
|
167
|
+
to use `respond_with` instead of default `respond_to` blocks. From 2.1, you need to explicitly opt-in to use this generator by adding the following to your `config/application.rb`:
|
168
|
+
|
169
|
+
config.app_generators.scaffold_controller :responders_controller
|
173
170
|
|
174
171
|
## Examples
|
175
172
|
|
176
173
|
Want more examples ? Check out this blog posts:
|
177
174
|
|
178
|
-
* [One in Three: Inherited Resources, Has Scope and Responders](http://blog.plataformatec.com.br/2009/12/one-in-three-inherited-resources-has-scope-and-responders/)
|
179
175
|
* [Embracing REST with mind, body and soul](http://blog.plataformatec.com.br/2009/08/embracing-rest-with-mind-body-and-soul/)
|
180
176
|
* [Three reasons to love ActionController::Responder](http://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder/)
|
181
177
|
* [My five favorite things about Rails 3](http://www.engineyard.com/blog/2009/my-five-favorite-things-about-rails-3/)
|
@@ -194,7 +194,7 @@ module ActionController #:nodoc:
|
|
194
194
|
mimes = collect_mimes_from_class_level()
|
195
195
|
collector = ActionController::MimeResponds::Collector.new(mimes, request.variant)
|
196
196
|
block.call(collector) if block_given?
|
197
|
-
|
197
|
+
|
198
198
|
if format = collector.negotiate_format(request)
|
199
199
|
_process_format(format)
|
200
200
|
options = resources.size == 1 ? {} : resources.extract_options!
|
@@ -226,4 +226,4 @@ module ActionController #:nodoc:
|
|
226
226
|
end
|
227
227
|
end
|
228
228
|
end
|
229
|
-
end
|
229
|
+
end
|
@@ -15,32 +15,8 @@ module Rails
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
def orm_instance_update(params)
|
19
|
-
if orm_instance.respond_to?(:update)
|
20
|
-
orm_instance.update params
|
21
|
-
else
|
22
|
-
orm_instance.update_attributes params
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def controller_before_filter
|
27
|
-
if ActionController::Base.respond_to?(:before_action)
|
28
|
-
"before_action"
|
29
|
-
else
|
30
|
-
"before_filter"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
18
|
def attributes_params
|
35
|
-
|
36
|
-
"#{file_name}_params"
|
37
|
-
else
|
38
|
-
"params[:#{file_name}]"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def strong_parameters_defined?
|
43
|
-
defined?(ActionController::StrongParameters)
|
19
|
+
"#{singular_table_name}_params"
|
44
20
|
end
|
45
21
|
end
|
46
22
|
end
|
@@ -1,6 +1,10 @@
|
|
1
|
+
<% if namespaced? -%>
|
2
|
+
require_dependency "<%= namespaced_file_path %>/application_controller"
|
3
|
+
|
4
|
+
<% end -%>
|
1
5
|
<% module_namespacing do -%>
|
2
6
|
class <%= controller_class_name %>Controller < ApplicationController
|
3
|
-
|
7
|
+
before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
|
4
8
|
|
5
9
|
respond_to :html
|
6
10
|
|
@@ -30,7 +34,7 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
30
34
|
end
|
31
35
|
|
32
36
|
def update
|
33
|
-
<%= "flash[:notice] = '#{class_name} was successfully updated.' if " if flash? %>@<%=
|
37
|
+
<%= "flash[:notice] = '#{class_name} was successfully updated.' if " if flash? %>@<%= orm_instance.update(attributes_params) %>
|
34
38
|
respond_with(@<%= singular_table_name %>)
|
35
39
|
end
|
36
40
|
|
@@ -43,7 +47,6 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
43
47
|
def set_<%= singular_table_name %>
|
44
48
|
@<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %>
|
45
49
|
end
|
46
|
-
<%- if strong_parameters_defined? -%>
|
47
50
|
|
48
51
|
def <%= "#{singular_table_name}_params" %>
|
49
52
|
<%- if attributes_names.empty? -%>
|
@@ -52,6 +55,5 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
52
55
|
params.require(:<%= singular_table_name %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
|
53
56
|
<%- end -%>
|
54
57
|
end
|
55
|
-
<%- end -%>
|
56
58
|
end
|
57
59
|
<% end -%>
|
@@ -18,6 +18,14 @@ end
|
|
18
18
|
RUBY
|
19
19
|
end
|
20
20
|
|
21
|
+
def update_application
|
22
|
+
inject_into_class "config/application.rb", "Application", <<-RUBY
|
23
|
+
# Use the responders controller from the responders gem
|
24
|
+
config.app_generators.scaffold_controller :responders_controller
|
25
|
+
|
26
|
+
RUBY
|
27
|
+
end
|
28
|
+
|
21
29
|
def update_application_controller
|
22
30
|
prepend_file "app/controllers/application_controller.rb", %{require "application_responder"\n\n}
|
23
31
|
inject_into_class "app/controllers/application_controller.rb", "ApplicationController", <<-RUBY
|
data/lib/responders.rb
CHANGED
@@ -19,12 +19,6 @@ module Responders
|
|
19
19
|
config.responders.flash_keys = [:notice, :alert]
|
20
20
|
config.responders.namespace_lookup = false
|
21
21
|
|
22
|
-
if config.respond_to?(:app_generators)
|
23
|
-
config.app_generators.scaffold_controller = :responders_controller
|
24
|
-
else
|
25
|
-
config.generators.scaffold_controller = :responders_controller
|
26
|
-
end
|
27
|
-
|
28
22
|
# Add load paths straight to I18n, so engines and application can overwrite it.
|
29
23
|
require 'active_support/i18n'
|
30
24
|
I18n.load_path << File.expand_path('../responders/locales/en.yml', __FILE__)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Responders
|
2
2
|
module LocationResponder
|
3
3
|
def self.included(_base)
|
4
|
-
ActiveSupport::Deprecation.warn "Responders::LocationResponder is enabled by default, "
|
4
|
+
ActiveSupport::Deprecation.warn "Responders::LocationResponder is enabled by default, " \
|
5
5
|
"no need to include it", caller
|
6
6
|
end
|
7
7
|
end
|
data/lib/responders/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: responders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.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: 2015-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.2.0
|
19
|
+
version: 4.2.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '5'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 4.2.0
|
29
|
+
version: 4.2.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5'
|