hanami-controller 2.0.0.alpha2 → 2.0.0.alpha3
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 +9 -0
- data/README.md +7 -3
- data/hanami-controller.gemspec +1 -1
- data/lib/hanami/action/application_action.rb +11 -10
- data/lib/hanami/action/application_configuration.rb +6 -6
- data/lib/hanami/action/configuration.rb +12 -14
- data/lib/hanami/action/standalone_action.rb +1 -3
- data/lib/hanami/controller/version.rb +1 -1
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 015e9bf69c01ea01cbdd9a27e7bf4d4cb4f8f9a98f01a14d707fd68457096006
|
4
|
+
data.tar.gz: 0f2c2e2569453264b41e131451caae329cfbd7d6773d50f610355f5f6fd0b62b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7eb2b778608f9dd27cbf777dd00b98e079bc1ec790da5e388113d645babbc9972d10272c083e187dfafa875fe0e2387592f34fc4d48b0ff96be920d1d82c12b8
|
7
|
+
data.tar.gz: e1290141bb9128031b0593b1edcf2975fe5f01eadb4661fe0bf18c164f339671bf195b43f8933731cab13180b68a7141a4ce6caa01e1df9aabe3e5afb9e0c9a7
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
# Hanami::Controller
|
2
2
|
Complete, fast and testable actions for Rack
|
3
3
|
|
4
|
+
## v2.0.0.alpha3 - 2021-11-09
|
5
|
+
### Added
|
6
|
+
- [Luca Guidi] Automatically include session behavior in `Hanami::Action` when sessions are enabled via Hanami application config
|
7
|
+
- [Sean Collins] Pass exposures from action to view
|
8
|
+
|
9
|
+
### Changed
|
10
|
+
- [Tim Riley] (Internal) Updated settings to use updated `setting` API in dry-configurable 0.13.0
|
11
|
+
- [Sean Collins] Move automatic view rendering from `handle` to `finish`
|
12
|
+
|
4
13
|
## v2.0.0.alpha2 - 2021-05-04
|
5
14
|
### Added
|
6
15
|
- [Luca Guidi] Official support for Ruby: MRI 3.0
|
data/README.md
CHANGED
@@ -2,11 +2,15 @@
|
|
2
2
|
|
3
3
|
Complete, fast and testable actions for Rack and [Hanami](http://hanamirb.org)
|
4
4
|
|
5
|
+
## Version
|
6
|
+
|
7
|
+
**This branch contains the code for `hanami-controller` 2.x.**
|
8
|
+
|
5
9
|
## Status
|
6
10
|
|
7
11
|
[](https://badge.fury.io/rb/hanami-controller)
|
8
|
-
[](https://github.com/hanami/controller/actions?query=workflow%3Aci+branch%3Amain)
|
13
|
+
[](https://codecov.io/gh/hanami/controller)
|
10
14
|
[](https://depfu.com/github/hanami/controller?project=Bundler)
|
11
15
|
[](http://inch-ci.org/github/hanami/controller)
|
12
16
|
|
@@ -22,7 +26,7 @@ Complete, fast and testable actions for Rack and [Hanami](http://hanamirb.org)
|
|
22
26
|
|
23
27
|
## Rubies
|
24
28
|
|
25
|
-
__Hanami::Controller__ supports Ruby (MRI) 2.
|
29
|
+
__Hanami::Controller__ supports Ruby (MRI) 2.6+
|
26
30
|
|
27
31
|
## Installation
|
28
32
|
|
data/hanami-controller.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
spec.add_dependency 'rack', '~> 2.0'
|
23
23
|
spec.add_dependency 'hanami-utils', '~> 2.0.alpha'
|
24
|
-
spec.add_dependency 'dry-configurable', '~> 0.
|
24
|
+
spec.add_dependency 'dry-configurable', '~> 0.13', '>= 0.13.0'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'bundler', '>= 1.6', '< 3'
|
27
27
|
spec.add_development_dependency 'rack-test', '~> 1.0'
|
@@ -68,6 +68,11 @@ module Hanami
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def extend_behavior(action_class)
|
71
|
+
if application.config.actions.sessions.enabled?
|
72
|
+
require "hanami/action/session"
|
73
|
+
action_class.include Hanami::Action::Session
|
74
|
+
end
|
75
|
+
|
71
76
|
if application.config.actions.csrf_protection
|
72
77
|
require "hanami/action/csrf_protection"
|
73
78
|
action_class.include Hanami::Action::CSRFProtection
|
@@ -83,16 +88,6 @@ module Hanami
|
|
83
88
|
attr_reader :view
|
84
89
|
attr_reader :view_context
|
85
90
|
|
86
|
-
protected
|
87
|
-
|
88
|
-
def handle(request, response)
|
89
|
-
if view
|
90
|
-
response.render view, **request.params
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
91
|
def build_response(**options)
|
97
92
|
options = options.merge(view_options: method(:view_options))
|
98
93
|
super(**options)
|
@@ -105,6 +100,12 @@ module Hanami
|
|
105
100
|
def view_context_options(req, res)
|
106
101
|
{request: req, response: res}
|
107
102
|
end
|
103
|
+
|
104
|
+
# Automatically render the view, if the body hasn't been populated yet
|
105
|
+
def finish(req, res, halted)
|
106
|
+
res.render(view, **req.params, **res.exposures) if view && res.body.empty?
|
107
|
+
super
|
108
|
+
end
|
108
109
|
end
|
109
110
|
end
|
110
111
|
end
|
@@ -10,14 +10,14 @@ module Hanami
|
|
10
10
|
class ApplicationConfiguration
|
11
11
|
include Dry::Configurable
|
12
12
|
|
13
|
-
setting
|
14
|
-
setting
|
13
|
+
setting :cookies, default: {}, constructor: -> options { Cookies.new(options) }
|
14
|
+
setting :sessions, constructor: proc { |storage, *options| Sessions.new(storage, *options) }
|
15
15
|
setting :csrf_protection
|
16
16
|
|
17
|
-
setting :name_inference_base, "actions"
|
18
|
-
setting :view_context_identifier, "view.context"
|
19
|
-
setting :view_name_inferrer, ViewNameInferrer
|
20
|
-
setting :view_name_inference_base, "views"
|
17
|
+
setting :name_inference_base, default: "actions"
|
18
|
+
setting :view_context_identifier, default: "view.context"
|
19
|
+
setting :view_name_inferrer, default: ViewNameInferrer
|
20
|
+
setting :view_name_inference_base, default: "views"
|
21
21
|
|
22
22
|
def initialize(*)
|
23
23
|
super
|
@@ -58,7 +58,7 @@ module Hanami
|
|
58
58
|
# @see handled_exceptions=
|
59
59
|
#
|
60
60
|
# @since 0.2.0
|
61
|
-
setting :handled_exceptions, {}
|
61
|
+
setting :handled_exceptions, default: {}
|
62
62
|
|
63
63
|
# Specifies how to handle exceptions with an HTTP status
|
64
64
|
#
|
@@ -122,7 +122,7 @@ module Hanami
|
|
122
122
|
# @see formats=
|
123
123
|
#
|
124
124
|
# @since 0.2.0
|
125
|
-
setting :formats, DEFAULT_FORMATS.dup
|
125
|
+
setting :formats, default: DEFAULT_FORMATS.dup
|
126
126
|
|
127
127
|
# Registers a MIME type to format mapping
|
128
128
|
#
|
@@ -211,9 +211,9 @@ module Hanami
|
|
211
211
|
# @see default_request_format=
|
212
212
|
#
|
213
213
|
# @since 0.5.0
|
214
|
-
setting :default_request_format
|
214
|
+
setting :default_request_format, constructor: -> format {
|
215
215
|
Utils::Kernel.Symbol(format) unless format.nil?
|
216
|
-
|
216
|
+
}
|
217
217
|
|
218
218
|
# @!method default_response_format=(format)
|
219
219
|
#
|
@@ -243,9 +243,9 @@ module Hanami
|
|
243
243
|
# @see default_request_format=
|
244
244
|
#
|
245
245
|
# @since 0.5.0
|
246
|
-
setting :default_response_format
|
246
|
+
setting :default_response_format, constructor: -> format {
|
247
247
|
Utils::Kernel.Symbol(format) unless format.nil?
|
248
|
-
|
248
|
+
}
|
249
249
|
|
250
250
|
# @!method default_charset=(charset)
|
251
251
|
#
|
@@ -299,9 +299,7 @@ module Hanami
|
|
299
299
|
# @since 0.4.0
|
300
300
|
#
|
301
301
|
# @see default_headers=
|
302
|
-
setting :default_headers, {}
|
303
|
-
headers.compact
|
304
|
-
end
|
302
|
+
setting :default_headers, default: {}, constructor: -> headers { headers.compact }
|
305
303
|
|
306
304
|
# @!method cookies=(cookie_options)
|
307
305
|
#
|
@@ -332,11 +330,11 @@ module Hanami
|
|
332
330
|
# @since 0.4.0
|
333
331
|
#
|
334
332
|
# @see cookies=
|
335
|
-
setting :cookies, {}
|
333
|
+
setting :cookies, default: {}, constructor: -> cookie_options {
|
336
334
|
# Call `to_h` here to permit `ApplicationConfiguration::Cookies` object to be
|
337
335
|
# provided when application actions are configured
|
338
336
|
cookie_options.to_h.compact
|
339
|
-
|
337
|
+
}
|
340
338
|
|
341
339
|
# @!method root_directory=(dir)
|
342
340
|
#
|
@@ -364,11 +362,11 @@ module Hanami
|
|
364
362
|
# @since 1.0.0
|
365
363
|
#
|
366
364
|
# @api private
|
367
|
-
setting :root_directory
|
365
|
+
setting :root_directory, constructor: -> dir {
|
368
366
|
dir ||= Dir.pwd
|
369
367
|
|
370
368
|
Pathname(dir).realpath
|
371
|
-
|
369
|
+
}
|
372
370
|
|
373
371
|
# Default public directory
|
374
372
|
#
|
@@ -393,7 +391,7 @@ module Hanami
|
|
393
391
|
#
|
394
392
|
# @see root_directory
|
395
393
|
# @see public_directory
|
396
|
-
setting :public_directory, DEFAULT_PUBLIC_DIRECTORY
|
394
|
+
setting :public_directory, default: DEFAULT_PUBLIC_DIRECTORY
|
397
395
|
|
398
396
|
# Returns the configured public directory, appended onto the root directory.
|
399
397
|
#
|
@@ -553,9 +553,7 @@ module Hanami
|
|
553
553
|
|
554
554
|
# Finalize the response
|
555
555
|
#
|
556
|
-
#
|
557
|
-
# order to prepare their data before the response will be returned to the
|
558
|
-
# webserver.
|
556
|
+
# Prepare the data before the response will be returned to the webserver
|
559
557
|
#
|
560
558
|
# @since 0.1.0
|
561
559
|
# @api private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-controller
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.alpha3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -44,14 +44,20 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.13'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.13.0
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
55
|
- - "~>"
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
57
|
+
version: '0.13'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.13.0
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: bundler
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
181
|
- !ruby/object:Gem::Version
|
176
182
|
version: 1.3.1
|
177
183
|
requirements: []
|
178
|
-
rubygems_version: 3.2.
|
184
|
+
rubygems_version: 3.2.3
|
179
185
|
signing_key:
|
180
186
|
specification_version: 4
|
181
187
|
summary: Complete, fast and testable actions for Rack and Hanami
|