hanami 2.0.0.beta4 → 2.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|