hanami 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '099623ad9ce0088b28fc658340d85094d493f27e4320df725d4dfc062ee4939c'
4
- data.tar.gz: 759492d76fb078f025d00e57d8c81cc5840ca769e5a20a0e50d20a0221c9a599
3
+ metadata.gz: 0e4e96c0b8ba475c9f256fa14b1af20a353804df3f0db3847b814899f7cdd394
4
+ data.tar.gz: 8bc463f8095b0bff1ac433fe1869f90e5d7a98e88198546e2fd78ac0caf13639
5
5
  SHA512:
6
- metadata.gz: fa25a5f37d22c1faf03906914f1c0a4f5d119ae39088df6878d75ef5c830b7be7632b2b633aa915619ff44990784016da4df666b5343b56166cb31a1f613a4ea
7
- data.tar.gz: ff70c18b250591af4c2fbaf32532a7ca5cb00adbc17ab87a03e0bb0dddd0ca5a19a7440aa63d0abc9c1570d9784027a4981d2d097632852e7b69f150ebd56328
6
+ metadata.gz: 5fc16cc328fc1756b03875d8e6ce6383771b432d85deab7c9fb55c77f9e9a573c0ed449312456c322dd202c0402dd40f5eb126d25b3d6c2b6666e6ff4d9d69c1
7
+ data.tar.gz: 903eaccd76b79b10d1ff1197fa6f12d99ce824d41a66be2579549884a9d45d25d3d186fc6f56e33b7badafec427b64da1455443ff674488f2bfb5e3502ca65f4
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  The web, with simplicity.
4
4
 
5
+ ## v2.0.3 - 2023-02-01
6
+
7
+ ### Added
8
+
9
+ - [Luca Guidi] Official support for Ruby 3.2
10
+
11
+ ### Fixed
12
+
13
+ - [Adam Lassek] Ensure to setup a logger in a non-default Hanami env
14
+ - [R Gibim] Use production logger settings for non-default Hanami env
15
+ - [Adam Lassek] Allow slices to have a default for registrations directory
16
+
5
17
  ## v2.0.2 - 2022-12-25
6
18
 
7
19
  ### Added
@@ -126,7 +126,7 @@ module Hanami
126
126
  config.level = :debug
127
127
  config.stream = File.join("log", "#{env}.log") if env == :test
128
128
  config.logger_constructor = method(:development_logger)
129
- when :production
129
+ else
130
130
  config.level = :info
131
131
  config.formatter = :json
132
132
  config.logger_constructor = method(:production_logger)
data/lib/hanami/slice.rb CHANGED
@@ -843,6 +843,7 @@ module Hanami
843
843
  container.config.name = slice_name.to_sym
844
844
  container.config.root = root
845
845
  container.config.provider_dirs = [File.join("config", "providers")]
846
+ container.config.registrations_dir = File.join("config", "registrations")
846
847
 
847
848
  container.config.env = config.env
848
849
  container.config.inflector = config.inflector
@@ -7,7 +7,7 @@ module Hanami
7
7
  # @api private
8
8
  module Version
9
9
  # @api public
10
- VERSION = "2.0.2"
10
+ VERSION = "2.0.3"
11
11
 
12
12
  # @since 0.9.0
13
13
  # @api private
@@ -38,30 +38,16 @@ module Hanami
38
38
  MICROSECOND = "µs"
39
39
  private_constant :MICROSECOND
40
40
 
41
- # Dynamic extension used in production environments
42
- # @api private
43
- module Production
44
- private
45
-
46
- # @since 1.0.0
47
- # @api private
48
- def data(env, status:, elapsed:)
49
- payload = super
50
- payload[:elapsed] = elapsed
51
- payload[:elapsed_unit] = MICROSECOND
52
- payload
53
- end
54
- end
55
-
56
- # Dynamic extension used in non-production environments
41
+ # Dynamic extension used in development and test environments
57
42
  # @api private
58
43
  module Development
59
44
  private
60
45
 
61
- # @since 1.0.0
46
+ # @since 2.0.0
62
47
  # @api private
63
48
  def data(env, status:, elapsed:)
64
49
  payload = super
50
+ payload.delete(:elapsed_unit)
65
51
  payload[:elapsed] = elapsed > 1000 ? "#{elapsed / 1000}ms" : "#{elapsed}#{MICROSECOND}"
66
52
  payload
67
53
  end
@@ -71,7 +57,7 @@ module Hanami
71
57
  # @since 2.0.0
72
58
  def initialize(logger, env: :development)
73
59
  @logger = logger
74
- extend(env == :production ? Production : Development)
60
+ extend(Development) if %i[development test].include?(env)
75
61
  end
76
62
 
77
63
  # @api private
@@ -116,7 +102,9 @@ module Hanami
116
102
  ip: env[HTTP_X_FORWARDED_FOR] || env[REMOTE_ADDR],
117
103
  path: "#{env[SCRIPT_NAME]}#{env[PATH_INFO]}",
118
104
  length: extract_content_length(env),
119
- params: env.fetch(ROUTER_PARAMS, EMPTY_PARAMS)
105
+ params: env.fetch(ROUTER_PARAMS, EMPTY_PARAMS),
106
+ elapsed: elapsed,
107
+ elapsed_unit: MICROSECOND,
120
108
  }
121
109
  end
122
110
 
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe "Slice Registrations", :app_integration do
4
+ matcher :have_key do |name, value|
5
+ match do |slice|
6
+ slice.resolve(name) == value
7
+ end
8
+ end
9
+
10
+ specify "Registrations are loaded" do
11
+ with_tmp_directory(Dir.mktmpdir) do
12
+ write "config/app.rb", <<~RUBY
13
+ require "hanami"
14
+
15
+ module TestApp
16
+ class App < Hanami::App
17
+ end
18
+ end
19
+ RUBY
20
+
21
+ write "config/registrations/foo.rb", <<~RUBY
22
+ TestApp::App.register("foo") { "bar" }
23
+ RUBY
24
+
25
+ require "hanami/prepare"
26
+
27
+ expect(Hanami.app).to have_key(:foo, "bar")
28
+ end
29
+ end
30
+
31
+ specify "Slices load their own registrations" do
32
+ with_tmp_directory(Dir.mktmpdir) do
33
+ write "config/app.rb", <<~RUBY
34
+ require "hanami"
35
+
36
+ module TestApp
37
+ class App < Hanami::App
38
+ end
39
+ end
40
+ RUBY
41
+
42
+ write "config/slices/main.rb", <<~RUBY
43
+ module Admin
44
+ class Slice < Hanami::Slice
45
+ end
46
+ end
47
+ RUBY
48
+
49
+ write "config/slices/admin.rb", <<~RUBY
50
+ module Main
51
+ class Slice < Hanami::Slice
52
+ end
53
+ end
54
+ RUBY
55
+
56
+ write "config/registrations/foo.rb", <<~RUBY
57
+ TestApp::App.register("foo") { "bar" }
58
+ RUBY
59
+
60
+ write "slices/admin/config/registrations/bar.rb", <<~RUBY
61
+ Admin::Slice.register("bar") { "baz" }
62
+ RUBY
63
+
64
+ write "slices/main/config/registrations/baz.rb", <<~RUBY
65
+ Main::Slice.register("baz") { "quux" }
66
+ RUBY
67
+
68
+ require "hanami/prepare"
69
+
70
+ admin_slice = Hanami.app.slices[:admin]
71
+ main_slice = Hanami.app.slices[:main]
72
+
73
+ aggregate_failures do
74
+ expect(Hanami.app).to have_key(:foo, "bar")
75
+ expect(admin_slice).to have_key(:bar, "baz")
76
+ expect(main_slice).to have_key(:baz, "quux")
77
+ end
78
+ end
79
+ end
80
+ end
@@ -182,5 +182,14 @@ RSpec.describe Hanami::Config do
182
182
  .to change { config.logger_instance }
183
183
  .to logger_instance
184
184
  end
185
+
186
+ context "unrecognized :env" do
187
+ let(:env) { :staging }
188
+
189
+ it "provides a fail-safe configuration" do
190
+ expect { config.logger_instance }.to_not raise_error
191
+ expect(config.logger_instance).to be_a(Dry::Logger::Dispatcher)
192
+ end
193
+ end
185
194
  end
186
195
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  RSpec.describe "Hanami::VERSION" do
4
4
  it "returns current version" do
5
- expect(Hanami::VERSION).to eq("2.0.2")
5
+ expect(Hanami::VERSION).to eq("2.0.3")
6
6
  end
7
7
  end
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.2
4
+ version: 2.0.3
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-12-25 00:00:00.000000000 Z
11
+ date: 2023-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -337,6 +337,7 @@ files:
337
337
  - spec/integration/slices/external_slice_spec.rb
338
338
  - spec/integration/slices/slice_configuration_spec.rb
339
339
  - spec/integration/slices/slice_loading_spec.rb
340
+ - spec/integration/slices/slice_registrations_spec.rb
340
341
  - spec/integration/slices/slice_routing_spec.rb
341
342
  - spec/integration/slices_spec.rb
342
343
  - spec/integration/view/context/assets_spec.rb
@@ -407,7 +408,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
407
408
  - !ruby/object:Gem::Version
408
409
  version: '0'
409
410
  requirements: []
410
- rubygems_version: 3.4.1
411
+ rubygems_version: 3.4.5
411
412
  signing_key:
412
413
  specification_version: 4
413
414
  summary: The web, with simplicity
@@ -450,6 +451,7 @@ test_files:
450
451
  - spec/integration/slices/external_slice_spec.rb
451
452
  - spec/integration/slices/slice_configuration_spec.rb
452
453
  - spec/integration/slices/slice_loading_spec.rb
454
+ - spec/integration/slices/slice_registrations_spec.rb
453
455
  - spec/integration/slices/slice_routing_spec.rb
454
456
  - spec/integration/slices_spec.rb
455
457
  - spec/integration/view/context/assets_spec.rb