hanami 2.1.0.rc3 → 2.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 +8 -1
- data/hanami.gemspec +2 -2
- data/lib/hanami/helpers/assets_helper.rb +1 -1
- data/lib/hanami/providers/assets.rb +1 -2
- data/lib/hanami/slice/routing/middleware/stack.rb +3 -3
- data/lib/hanami/version.rb +1 -1
- data/lib/hanami/web/welcome.html.erb +2 -6
- data/spec/integration/assets/assets_spec.rb +4 -4
- data/spec/integration/rack_app/middleware_spec.rb +66 -0
- data/spec/support/app_integration.rb +1 -1
- data/spec/unit/hanami/version_spec.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f9161e98415778e746f9140d2ee9e23b7d8388eca678e7ddeb696c2bb8cdfee
|
4
|
+
data.tar.gz: 7deffed8c1081258db7182306bf95bf484fa9e08dbd37193ca36659a06d45040
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1acff67204a42604558bce5455d36454cc8c176a741906750a536ae72f3048a006c798db7192918d64f06cc4b1fce7ce5c4f46726d0a27b309c82a1263b3d72b
|
7
|
+
data.tar.gz: aadb05898198c750f485f5a78f6d35f1e82c6b95ee052f749cfb0241b11f6706c367f7cfc01c31205664ff508853a3415884b7b729097e689d2f9f72c6bdf0fc
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
The web, with simplicity.
|
4
4
|
|
5
|
+
## v2.1.0 - 2024-02-27
|
6
|
+
|
7
|
+
### Changed
|
8
|
+
|
9
|
+
- [Pat Allan] Pass keyword arguments through to configured middleware
|
10
|
+
- [Tim Riley] Expect underscored slice names in `public/assets/` to avoid naming conflicts with nested asset entry points. In this arrangement, an "admin" slice will have its assets compiled into `public/assets/_admin/`.
|
11
|
+
|
5
12
|
## v2.1.0.rc3 - 2024-02-16
|
6
13
|
|
7
14
|
### Changed
|
@@ -10,7 +17,7 @@ The web, with simplicity.
|
|
10
17
|
allows it to be used with tempalte output tags (such as ERB's `<%=`) that capture a block for the
|
11
18
|
given content. (#1369)
|
12
19
|
|
13
|
-
|
20
|
+
### Fixed
|
14
21
|
|
15
22
|
- [Tim Riley] Ensure assets Rake task for Heroku works (#1368)
|
16
23
|
|
data/hanami.gemspec
CHANGED
@@ -38,8 +38,8 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_dependency "dry-monitor", "~> 1.0", ">= 1.0.1", "< 2"
|
39
39
|
spec.add_dependency "dry-system", "~> 1.0", "< 2"
|
40
40
|
spec.add_dependency "dry-logger", "~> 1.0", "< 2"
|
41
|
-
spec.add_dependency "hanami-cli", "
|
42
|
-
spec.add_dependency "hanami-utils", "~> 2.1
|
41
|
+
spec.add_dependency "hanami-cli", "~> 2.1"
|
42
|
+
spec.add_dependency "hanami-utils", "~> 2.1"
|
43
43
|
spec.add_dependency "zeitwerk", "~> 2.6"
|
44
44
|
|
45
45
|
spec.add_development_dependency "rspec", "~> 3.8"
|
@@ -382,7 +382,7 @@ module Hanami
|
|
382
382
|
#
|
383
383
|
# <%= favicon_tag "favicon.ico", id: "fav" %>
|
384
384
|
#
|
385
|
-
# # <link id
|
385
|
+
# # <link id="fav" href="/assets/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
386
386
|
#
|
387
387
|
# @example Fingerprint Mode
|
388
388
|
#
|
@@ -29,8 +29,7 @@ module Hanami
|
|
29
29
|
|
30
30
|
# @api private
|
31
31
|
def start
|
32
|
-
|
33
|
-
root = slice.app.root.join("public", "assets", assets_dir.to_s)
|
32
|
+
root = slice.app.root.join("public", "assets", Hanami::Assets.public_assets_dir(slice).to_s)
|
34
33
|
|
35
34
|
assets = Hanami::Assets.new(config: slice.config.assets, root: root)
|
36
35
|
|
@@ -91,16 +91,16 @@ module Hanami
|
|
91
91
|
#
|
92
92
|
# @api public
|
93
93
|
# @since 2.0.0
|
94
|
-
def use(spec, *args, path_prefix: ::Hanami::Router::DEFAULT_PREFIX, before: nil, after: nil, &blk)
|
94
|
+
def use(spec, *args, path_prefix: ::Hanami::Router::DEFAULT_PREFIX, before: nil, after: nil, **kwargs, &blk)
|
95
95
|
middleware = resolve_middleware_class(spec)
|
96
|
-
item = [middleware, args, blk]
|
96
|
+
item = [middleware, args, kwargs, blk]
|
97
97
|
|
98
98
|
if before
|
99
99
|
@stack[path_prefix].insert((idx = index_of(before, path_prefix)).zero? ? 0 : idx - 1, item)
|
100
100
|
elsif after
|
101
101
|
@stack[path_prefix].insert(index_of(after, path_prefix) + 1, item)
|
102
102
|
else
|
103
|
-
@stack[path_prefix].push(
|
103
|
+
@stack[path_prefix].push(item)
|
104
104
|
end
|
105
105
|
|
106
106
|
self
|
data/lib/hanami/version.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
<title>Hanami</title>
|
8
8
|
<style>
|
9
9
|
:root {
|
10
|
-
--max-width:
|
10
|
+
--max-width: 768px;
|
11
11
|
--foreground-rgb: 0, 0, 0;
|
12
12
|
--background-rgb: 255, 255, 255;
|
13
13
|
--card-border-rgb: 200, 200, 200;
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
.grid {
|
86
86
|
display: grid;
|
87
|
-
grid-template-columns: repeat(
|
87
|
+
grid-template-columns: repeat(3, 1fr);
|
88
88
|
column-gap: 20px;
|
89
89
|
max-width: 100%;
|
90
90
|
margin-bottom: 8vh;
|
@@ -182,10 +182,6 @@
|
|
182
182
|
<h2>Guides</h2>
|
183
183
|
<p>Get started with the Hanami guides</p>
|
184
184
|
</a>
|
185
|
-
<a href="https://docs.hanamirb.org/" class="card">
|
186
|
-
<h2>API docs</h2>
|
187
|
-
<p>Learn more through the API docs</p>
|
188
|
-
</a>
|
189
185
|
<a href="http://github.com/hanami" class="card">
|
190
186
|
<h2>Code</h2>
|
191
187
|
<p>Contribute to the source code</p>
|
@@ -133,13 +133,13 @@ RSpec.describe "Assets", :app_integration do
|
|
133
133
|
|
134
134
|
output = Main::Slice["views.posts.show"].call.to_s
|
135
135
|
|
136
|
-
expect(output).to match(%r{<link href="/assets/
|
137
|
-
expect(output).to match(%r{<script src="/assets/
|
136
|
+
expect(output).to match(%r{<link href="/assets/_main/app-[A-Z0-9]{8}.css" type="text/css" rel="stylesheet">})
|
137
|
+
expect(output).to match(%r{<script src="/assets/_main/app-[A-Z0-9]{8}.js" type="text/javascript"></script>})
|
138
138
|
|
139
139
|
assets = Main::Slice["assets"]
|
140
140
|
|
141
|
-
expect(assets["app.css"].to_s).to match(%r{/assets/
|
142
|
-
expect(assets["app.js"].to_s).to match(%r{/assets/
|
141
|
+
expect(assets["app.css"].to_s).to match(%r{/assets/_main/app-[A-Z0-9]{8}.css})
|
142
|
+
expect(assets["app.js"].to_s).to match(%r{/assets/_main/app-[A-Z0-9]{8}.js})
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
@@ -147,6 +147,72 @@ RSpec.describe "Hanami web app", :app_integration do
|
|
147
147
|
expect(last_response.body).to eql("one.two")
|
148
148
|
end
|
149
149
|
|
150
|
+
specify "Setting a middleware that requires keyword arguments" do
|
151
|
+
write "config/app.rb", <<~RUBY
|
152
|
+
require "hanami"
|
153
|
+
|
154
|
+
module TestApp
|
155
|
+
class TestMiddleware
|
156
|
+
def initialize(app, key:, value:)
|
157
|
+
@app = app
|
158
|
+
@key = key
|
159
|
+
@value = value
|
160
|
+
end
|
161
|
+
|
162
|
+
def call(env)
|
163
|
+
env[@key] = @value
|
164
|
+
@app.call(env)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
class App < Hanami::App
|
169
|
+
config.logger.stream = StringIO.new
|
170
|
+
|
171
|
+
# Test middleware with keywords inside config
|
172
|
+
config.middleware.use(TestApp::TestMiddleware, key: "from_config", value: "config")
|
173
|
+
end
|
174
|
+
end
|
175
|
+
RUBY
|
176
|
+
|
177
|
+
write "config/routes.rb", <<~RUBY
|
178
|
+
require "hanami/router"
|
179
|
+
|
180
|
+
module TestApp
|
181
|
+
class Routes < Hanami::Routes
|
182
|
+
slice :main, at: "/" do
|
183
|
+
# Also test middleware with keywords inside routes
|
184
|
+
use TestApp::TestMiddleware, key: "from_routes", value: "routes"
|
185
|
+
|
186
|
+
root to: "home.index"
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
RUBY
|
191
|
+
|
192
|
+
write "slices/main/actions/home/index.rb", <<~RUBY
|
193
|
+
require "hanami/action"
|
194
|
+
|
195
|
+
module Main
|
196
|
+
module Actions
|
197
|
+
module Home
|
198
|
+
class Index < Hanami::Action
|
199
|
+
def handle(request, response)
|
200
|
+
response.body = [request.env["from_config"], request.env["from_routes"]].join(", ")
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
RUBY
|
207
|
+
|
208
|
+
require "hanami/boot"
|
209
|
+
|
210
|
+
get "/"
|
211
|
+
|
212
|
+
expect(last_response).to be_successful
|
213
|
+
expect(last_response.body).to eq "config, routes"
|
214
|
+
end
|
215
|
+
|
150
216
|
specify "Setting a middleware that requires a block" do
|
151
217
|
write "config/app.rb", <<~RUBY
|
152
218
|
require "hanami"
|
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.1.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -160,30 +160,30 @@ dependencies:
|
|
160
160
|
name: hanami-cli
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
|
-
- -
|
163
|
+
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: 2.1
|
165
|
+
version: '2.1'
|
166
166
|
type: :runtime
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
|
-
- -
|
170
|
+
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: 2.1
|
172
|
+
version: '2.1'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: hanami-utils
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: 2.1
|
179
|
+
version: '2.1'
|
180
180
|
type: :runtime
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: 2.1
|
186
|
+
version: '2.1'
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: zeitwerk
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|