hanami 2.0.0.beta4 → 2.0.0.rc1
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 +19 -0
- data/hanami.gemspec +8 -7
- data/lib/hanami/app.rb +47 -36
- data/lib/hanami/assets/app_config.rb +7 -15
- data/lib/hanami/assets/config.rb +5 -6
- data/lib/hanami/config/actions/content_security_policy.rb +1 -1
- data/lib/hanami/config/actions/cookies.rb +27 -0
- data/lib/hanami/config/actions/sessions.rb +42 -5
- data/lib/hanami/config/actions.rb +81 -17
- data/lib/hanami/config/logger.rb +112 -23
- data/lib/hanami/config/router.rb +0 -1
- data/lib/hanami/config/views.rb +6 -10
- data/lib/hanami/config.rb +235 -73
- data/lib/hanami/constants.rb +4 -0
- data/lib/hanami/errors.rb +17 -0
- data/lib/hanami/extensions/action/slice_configured_action.rb +9 -5
- data/lib/hanami/extensions/action.rb +59 -7
- data/lib/hanami/extensions/view/context.rb +3 -4
- data/lib/hanami/extensions/view/slice_configured_view.rb +4 -4
- data/lib/hanami/extensions/view.rb +7 -5
- data/lib/hanami/providers/inflector.rb +6 -0
- data/lib/hanami/providers/logger.rb +8 -0
- data/lib/hanami/providers/rack.rb +12 -0
- data/lib/hanami/providers/routes.rb +14 -4
- data/lib/hanami/routes.rb +36 -1
- data/lib/hanami/settings/env_store.rb +1 -1
- data/lib/hanami/settings.rb +102 -36
- data/lib/hanami/slice/router.rb +38 -16
- data/lib/hanami/slice/routing/middleware/stack.rb +66 -42
- data/lib/hanami/slice/routing/resolver.rb +10 -17
- data/lib/hanami/slice/view_name_inferrer.rb +1 -1
- data/lib/hanami/slice.rb +553 -14
- data/lib/hanami/slice_registrar.rb +20 -15
- data/lib/hanami/version.rb +2 -3
- data/lib/hanami/web/rack_logger.rb +14 -4
- data/lib/hanami.rb +122 -23
- data/spec/integration/action/csrf_protection_spec.rb +1 -1
- data/spec/integration/container/application_routes_helper_spec.rb +3 -1
- data/spec/integration/container/provider_lifecycle_spec.rb +61 -0
- data/spec/integration/container/standard_providers/rack_provider_spec.rb +44 -0
- data/spec/integration/container/{standard_bootable_components_spec.rb → standard_providers_spec.rb} +3 -3
- data/spec/integration/rack_app/body_parser_spec.rb +3 -0
- data/spec/integration/rack_app/middleware_spec.rb +427 -3
- data/spec/integration/rack_app/non_booted_rack_app_spec.rb +2 -1
- data/spec/integration/rack_app/rack_app_spec.rb +39 -11
- data/spec/integration/setup_spec.rb +4 -4
- data/spec/integration/slices/external_slice_spec.rb +2 -1
- data/spec/integration/slices/slice_configuration_spec.rb +3 -1
- data/spec/integration/slices/slice_loading_spec.rb +4 -4
- data/spec/integration/slices/slice_routing_spec.rb +4 -3
- data/spec/integration/slices_spec.rb +100 -0
- data/spec/isolation/hanami/boot/success_spec.rb +1 -1
- data/spec/support/app_integration.rb +2 -10
- data/spec/unit/hanami/config/actions/content_security_policy_spec.rb +7 -7
- data/spec/unit/hanami/config/actions/default_values_spec.rb +1 -1
- data/spec/unit/hanami/config/actions/sessions_spec.rb +1 -3
- data/spec/unit/hanami/config/actions_spec.rb +1 -12
- data/spec/unit/hanami/config/logger_spec.rb +38 -55
- data/spec/unit/hanami/config/router_spec.rb +1 -1
- data/spec/unit/hanami/config/views_spec.rb +3 -13
- data/spec/unit/hanami/settings_spec.rb +1 -1
- data/spec/unit/hanami/slice_configurable_spec.rb +5 -5
- data/spec/unit/hanami/slice_spec.rb +32 -0
- data/spec/unit/hanami/version_spec.rb +1 -1
- data/spec/unit/hanami/web/rack_logger_spec.rb +13 -2
- metadata +54 -45
- data/lib/hanami/config/sessions.rb +0 -50
- data/spec/unit/hanami/config_spec.rb +0 -43
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -36,128 +36,136 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0
|
40
|
-
- - "
|
39
|
+
version: '1.0'
|
40
|
+
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: '2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '0
|
50
|
-
- - "
|
49
|
+
version: '1.0'
|
50
|
+
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
52
|
+
version: '2'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: dry-core
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '0
|
60
|
-
- - "
|
59
|
+
version: '1.0'
|
60
|
+
- - "<"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: '2'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0
|
70
|
-
- - "
|
69
|
+
version: '1.0'
|
70
|
+
- - "<"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
72
|
+
version: '2'
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: dry-inflector
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|
76
76
|
requirements:
|
77
77
|
- - "~>"
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version: '0
|
80
|
-
- - "
|
79
|
+
version: '1.0'
|
80
|
+
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: '2'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
90
|
-
- - "
|
89
|
+
version: '1.0'
|
90
|
+
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
92
|
+
version: '2'
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name: dry-
|
94
|
+
name: dry-monitor
|
95
95
|
requirement: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - "~>"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: '0
|
100
|
-
- - "
|
99
|
+
version: '1.0'
|
100
|
+
- - "<"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: '2'
|
103
103
|
type: :runtime
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0
|
110
|
-
- - "
|
109
|
+
version: '1.0'
|
110
|
+
- - "<"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
112
|
+
version: '2'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
|
-
name: dry-
|
114
|
+
name: dry-system
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
120
|
-
- - ">="
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
version: '0.7'
|
119
|
+
version: 1.0.rc
|
123
120
|
type: :runtime
|
124
121
|
prerelease: false
|
125
122
|
version_requirements: !ruby/object:Gem::Requirement
|
126
123
|
requirements:
|
127
124
|
- - "~>"
|
128
125
|
- !ruby/object:Gem::Version
|
129
|
-
version:
|
130
|
-
|
126
|
+
version: 1.0.rc
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: dry-logger
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - "~>"
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.0.rc
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - "~>"
|
131
139
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
140
|
+
version: 1.0.rc
|
133
141
|
- !ruby/object:Gem::Dependency
|
134
142
|
name: hanami-cli
|
135
143
|
requirement: !ruby/object:Gem::Requirement
|
136
144
|
requirements:
|
137
145
|
- - "~>"
|
138
146
|
- !ruby/object:Gem::Version
|
139
|
-
version: 2.0.
|
147
|
+
version: 2.0.rc
|
140
148
|
type: :runtime
|
141
149
|
prerelease: false
|
142
150
|
version_requirements: !ruby/object:Gem::Requirement
|
143
151
|
requirements:
|
144
152
|
- - "~>"
|
145
153
|
- !ruby/object:Gem::Version
|
146
|
-
version: 2.0.
|
154
|
+
version: 2.0.rc
|
147
155
|
- !ruby/object:Gem::Dependency
|
148
156
|
name: hanami-utils
|
149
157
|
requirement: !ruby/object:Gem::Requirement
|
150
158
|
requirements:
|
151
159
|
- - "~>"
|
152
160
|
- !ruby/object:Gem::Version
|
153
|
-
version: 2.0.
|
161
|
+
version: 2.0.rc
|
154
162
|
type: :runtime
|
155
163
|
prerelease: false
|
156
164
|
version_requirements: !ruby/object:Gem::Requirement
|
157
165
|
requirements:
|
158
166
|
- - "~>"
|
159
167
|
- !ruby/object:Gem::Version
|
160
|
-
version: 2.0.
|
168
|
+
version: 2.0.rc
|
161
169
|
- !ruby/object:Gem::Dependency
|
162
170
|
name: zeitwerk
|
163
171
|
requirement: !ruby/object:Gem::Requirement
|
@@ -240,7 +248,6 @@ files:
|
|
240
248
|
- lib/hanami/config/logger.rb
|
241
249
|
- lib/hanami/config/null_config.rb
|
242
250
|
- lib/hanami/config/router.rb
|
243
|
-
- lib/hanami/config/sessions.rb
|
244
251
|
- lib/hanami/config/views.rb
|
245
252
|
- lib/hanami/constants.rb
|
246
253
|
- lib/hanami/errors.rb
|
@@ -290,8 +297,10 @@ files:
|
|
290
297
|
- spec/integration/container/autoloader_spec.rb
|
291
298
|
- spec/integration/container/imports_spec.rb
|
292
299
|
- spec/integration/container/prepare_container_spec.rb
|
300
|
+
- spec/integration/container/provider_lifecycle_spec.rb
|
293
301
|
- spec/integration/container/shutdown_spec.rb
|
294
|
-
- spec/integration/container/
|
302
|
+
- spec/integration/container/standard_providers/rack_provider_spec.rb
|
303
|
+
- spec/integration/container/standard_providers_spec.rb
|
295
304
|
- spec/integration/dotenv_loading_spec.rb
|
296
305
|
- spec/integration/rack_app/body_parser_spec.rb
|
297
306
|
- spec/integration/rack_app/middleware_spec.rb
|
@@ -347,7 +356,6 @@ files:
|
|
347
356
|
- spec/unit/hanami/config/router_spec.rb
|
348
357
|
- spec/unit/hanami/config/slices_spec.rb
|
349
358
|
- spec/unit/hanami/config/views_spec.rb
|
350
|
-
- spec/unit/hanami/config_spec.rb
|
351
359
|
- spec/unit/hanami/env_spec.rb
|
352
360
|
- spec/unit/hanami/settings/env_store_spec.rb
|
353
361
|
- spec/unit/hanami/settings_spec.rb
|
@@ -377,7 +385,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
377
385
|
- !ruby/object:Gem::Version
|
378
386
|
version: 1.3.1
|
379
387
|
requirements: []
|
380
|
-
rubygems_version: 3.3.
|
388
|
+
rubygems_version: 3.3.3
|
381
389
|
signing_key:
|
382
390
|
specification_version: 4
|
383
391
|
summary: The web, with simplicity
|
@@ -400,8 +408,10 @@ test_files:
|
|
400
408
|
- spec/integration/container/autoloader_spec.rb
|
401
409
|
- spec/integration/container/imports_spec.rb
|
402
410
|
- spec/integration/container/prepare_container_spec.rb
|
411
|
+
- spec/integration/container/provider_lifecycle_spec.rb
|
403
412
|
- spec/integration/container/shutdown_spec.rb
|
404
|
-
- spec/integration/container/
|
413
|
+
- spec/integration/container/standard_providers/rack_provider_spec.rb
|
414
|
+
- spec/integration/container/standard_providers_spec.rb
|
405
415
|
- spec/integration/dotenv_loading_spec.rb
|
406
416
|
- spec/integration/rack_app/body_parser_spec.rb
|
407
417
|
- spec/integration/rack_app/middleware_spec.rb
|
@@ -457,7 +467,6 @@ test_files:
|
|
457
467
|
- spec/unit/hanami/config/router_spec.rb
|
458
468
|
- spec/unit/hanami/config/slices_spec.rb
|
459
469
|
- spec/unit/hanami/config/views_spec.rb
|
460
|
-
- spec/unit/hanami/config_spec.rb
|
461
470
|
- spec/unit/hanami/env_spec.rb
|
462
471
|
- spec/unit/hanami/settings/env_store_spec.rb
|
463
472
|
- spec/unit/hanami/settings_spec.rb
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "hanami/utils/string"
|
4
|
-
require "hanami/utils/class"
|
5
|
-
|
6
|
-
module Hanami
|
7
|
-
class Config
|
8
|
-
# Hanami config for HTTP sessions
|
9
|
-
#
|
10
|
-
# @since 2.0.0
|
11
|
-
class Sessions
|
12
|
-
NULL_SESSION_OPTION = :null
|
13
|
-
private_constant :NULL_SESSION_OPTION
|
14
|
-
|
15
|
-
def self.null
|
16
|
-
self.class.new(NULL_SESSION_OPTION)
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :storage, :options
|
20
|
-
|
21
|
-
def initialize(*args)
|
22
|
-
storage, options, = Array(args.dup).flatten
|
23
|
-
|
24
|
-
@storage = storage
|
25
|
-
@options = options || {}
|
26
|
-
end
|
27
|
-
|
28
|
-
def enabled?
|
29
|
-
storage != NULL_SESSION_OPTION
|
30
|
-
end
|
31
|
-
|
32
|
-
def middleware
|
33
|
-
[storage_middleware, options]
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def storage_middleware
|
39
|
-
require_storage
|
40
|
-
|
41
|
-
name = Utils::String.classify(storage)
|
42
|
-
Utils::Class.load!(name, Rack::Session)
|
43
|
-
end
|
44
|
-
|
45
|
-
def require_storage
|
46
|
-
require "rack/session/#{storage}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require "hanami/config"
|
2
|
-
|
3
|
-
RSpec.describe Hanami::Config do
|
4
|
-
let(:config) { described_class.new(app_name: app_name, env: env) }
|
5
|
-
let(:app_name) { "MyApp::app" }
|
6
|
-
let(:env) { :development }
|
7
|
-
|
8
|
-
describe "environment-specific config" do
|
9
|
-
before do
|
10
|
-
config.logger.level = :debug__set_without_env
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
config.environment :production do |c|
|
15
|
-
c.logger.level = :info__set_for_production_env
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
context "settings configured for current env" do
|
20
|
-
let(:env) { :production }
|
21
|
-
|
22
|
-
it "applies the settings" do
|
23
|
-
expect(config.logger.level).to eq :info__set_for_production_env
|
24
|
-
end
|
25
|
-
|
26
|
-
it "leaves the settings in place when finalizing" do
|
27
|
-
expect { config.finalize! }.not_to(change { config.logger.level })
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "settings configured for a different env" do
|
32
|
-
let(:env) { :development }
|
33
|
-
|
34
|
-
it "does not apply the settings" do
|
35
|
-
expect(config.logger.level).to eq :debug__set_without_env
|
36
|
-
end
|
37
|
-
|
38
|
-
it "does not apply the settings when finalizing" do
|
39
|
-
expect { config.finalize! }.not_to(change { config.logger.level })
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|