hanami-webconsole 0.1.0 → 2.1.0.beta2

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: dac26a4584e27ecb119442dd0fa8503844ddf6165cae558dbab596cba2f59cc4
4
- data.tar.gz: 321fe39c2000a1df56f9c50ee85d530f7efe55dfcee1bc0b963022dbba35b4c5
3
+ metadata.gz: bfd72232a858cb02085d8bc8e1e51db6ad511fc9a98b33f2af6216f1a0872369
4
+ data.tar.gz: 13b031ac4e6380391ce93c03e106c3f6f067547bdff7c6e6aa1a2e0579ac7c4e
5
5
  SHA512:
6
- metadata.gz: ffb76ddfe634ef98813e06f451110b1188ebf3e853db1a20403489e3b6408385979234c122dbea0c55a5badaea027ff264f7beb1adfec065b3f160ee4308f359
7
- data.tar.gz: 81b3fec260f50d447083c5d11d728e016712374c57f4934e87e833d60e6cd5d4d5667a72b73420a4f93833dab4c5a30716f8df42b0bfff61765fd56023eda049
6
+ metadata.gz: 85e9b3eea0220d6e8bb2b64bf9ecbb963a85d4a0ff678fe114e4aa622ddaca4395768b54b037c1f791f080aec02e1c6c06f6220e1b156a96c8e246e7100a5e84
7
+ data.tar.gz: cf80acd3bdf343e9acdedafd95292c76a439fb3b44bee86195932601f4ebebd4c54460859ccdf08673742bf869adf02d5042323a73c1ec822db32981ca80768a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,30 @@
1
1
  # Hanami::Webconsole
2
2
  Hanami development web console.
3
3
 
4
+ ## v2.1.0.beta2 - 2023-10-04
5
+
6
+ ### Fixed
7
+
8
+ - [Tim Riley] Set correct error codes for Hanami app exceptions
9
+
10
+ ## v2.1.0.beta1 - 2023-06-29
11
+
12
+ ### Added
13
+
14
+ - [Tim Riley] Introduce `Hanami::Webconsole::Middleware`, a Rack middleware automatically used in
15
+ the Hanami app when hanami-webconsole is bundled (#6)
16
+
17
+ ### Changed
18
+
19
+ - [Tim Riley] Remove the Hanami v1 plugin (#6)
20
+
21
+ ## v0.2.0 - 2019-01-18
22
+
23
+ ### Added
24
+
25
+ - [Luca Guidi] Official support for Ruby 2.6.0
26
+ - [Luca Guidi] Support for `bundler` 2.0+
27
+
4
28
  ## v0.1.0 - 2018-04-11
5
29
 
6
30
  ## v0.1.0.rc2 - 2018-04-06
@@ -10,5 +34,7 @@ Hanami development web console.
10
34
  ## v0.1.0.beta2 - 2018-03-23
11
35
 
12
36
  ## v0.1.0.beta1 - 2018-02-28
37
+
13
38
  ### Added
39
+
14
40
  - [Luca Guidi & Anton Davydov] Package as Hanami plugin
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright © 2018 Luca Guidi
1
+ Copyright © 2014 Hanami Team
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -2,10 +2,17 @@
2
2
 
3
3
  [Hanami](http://hanamirb.org) development web console.
4
4
 
5
+ ## Version
6
+
7
+ **This branch contains the code for `hanami-webconsole` 2.x.**
8
+
5
9
  ## Status
6
10
 
7
- [![Gem Version](http://img.shields.io/gem/v/hanami-webconsole.svg)](https://badge.fury.io/rb/hanami-webconsole)
8
- [![Build Status](http://img.shields.io/travis/hanami/webconsole/master.svg)](https://travis-ci.org/hanami/webconsole?branch=master)
11
+ [![Gem Version](https://badge.fury.io/rb/hanami-webconsole.svg)](https://badge.fury.io/rb/hanami-webconsole)
12
+ [![CI](https://github.com/hanami/webconsole/workflows/ci/badge.svg?branch=main)](https://github.com/hanami/webconsole/actions?query=workflow%3Aci+branch%3Amain)
13
+ [![Test Coverage](https://codecov.io/gh/hanami/webconsole/branch/main/graph/badge.svg)](https://codecov.io/gh/hanami/webconsole)
14
+ [![Depfu](https://badges.depfu.com/badges/a8545fb67cf32a2c75b6227bc0821027/overview.svg)](https://depfu.com/github/hanami/webconsole?project=Bundler)
15
+ [![Inline Docs](http://inch-ci.org/github/hanami/webconsole.svg)](http://inch-ci.org/github/hanami/webconsole)
9
16
 
10
17
  ## Installation
11
18
 
@@ -57,4 +64,4 @@ This gem is based on the great work of [`better_errors`](https://rubygems.org/ge
57
64
 
58
65
  ## Copyright
59
66
 
60
- Copyright © 2018 Luca Guidi – Released under MIT License
67
+ Copyright © 2014 Hanami Team – Released under MIT License
@@ -1,4 +1,3 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
3
  lib = File.expand_path("../lib", __FILE__)
@@ -10,23 +9,17 @@ Gem::Specification.new do |spec|
10
9
  spec.version = Hanami::Webconsole::VERSION
11
10
  spec.authors = ["Luca Guidi"]
12
11
  spec.email = ["me@lucaguidi.com"]
13
-
14
12
  spec.summary = "Hanami webconsole"
15
13
  spec.description = "Hanami webconsole for development"
16
14
  spec.homepage = "http://hanamirb.org"
17
15
  spec.license = "MIT"
18
16
 
19
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
20
-
21
- spec.files = `git ls-files -- lib/* CHANGELOG.md LICENSE.md README.md hanami-webconsole.gemspec`.split($INPUT_RECORD_SEPARATOR)
22
- spec.bindir = "exe"
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
+ spec.files = `git ls-files -- lib/* CHANGELOG.md LICENSE.md README.md hanami-webconsole.gemspec`.split($INPUT_RECORD_SEPARATOR)
24
18
  spec.require_paths = ["lib"]
25
19
 
26
- spec.add_dependency "better_errors", "~> 2.4"
27
- spec.add_dependency "binding_of_caller", "~> 0.8"
20
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
28
21
 
29
- spec.add_development_dependency "bundler", "~> 1.16"
30
- spec.add_development_dependency "rake", "~> 12.0"
31
- spec.add_development_dependency "rspec", "~> 3.7"
22
+ # Avoid 2.10.0 until https://github.com/BetterErrors/better_errors/issues/516 is fixed
23
+ spec.add_dependency "better_errors", "~> 2.9", "< 2.10.0"
24
+ spec.add_dependency "binding_of_caller", "~> 1.0"
32
25
  end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rack"
4
+
5
+ module Hanami
6
+ module Webconsole
7
+ # @api private
8
+ # @since 2.1.0
9
+ class Middleware
10
+ # @api private
11
+ # @since 2.1.0
12
+ CAPTURE_EXCEPTION_PROC_KEY = "hanami.webconsole.capture_exception_proc"
13
+ private_constant :CAPTURE_EXCEPTION_PROC_KEY
14
+
15
+ # @see Middleware#call
16
+ #
17
+ # @api private
18
+ # @since 2.1.0
19
+ module BetterErrorsExtension
20
+ # The BetterErrors middleware always returns a 500 status when rescuing an exception
21
+ # (outside of Rails). This is not not always appropriate, such as for a
22
+ # `Hanami::Router::NotFoundError`, which should be a 404.
23
+ #
24
+ # To account for this, gently patch `BetterErrors::Middleware#show_error_page` (which is
25
+ # called only when an exception has been rescued) to pass that rescued exception to a proc
26
+ # we inject into the rack env here in our own middleware. This allows our middleware to know
27
+ # the about exception class and provide the correct status code after BetterErrors is done
28
+ # with its job.
29
+ #
30
+ # @see Webconsole::Middleware#call
31
+ def show_error_page(env, exception = nil)
32
+ if (capture_proc = env[CAPTURE_EXCEPTION_PROC_KEY])
33
+ capture_proc.call(exception)
34
+ end
35
+
36
+ super
37
+ end
38
+ end
39
+ BetterErrors::Middleware.prepend(BetterErrorsExtension)
40
+
41
+ # @api private
42
+ # @since 2.1.0
43
+ def initialize(app, config)
44
+ @better_errors = BetterErrors::Middleware.new(app)
45
+ @config = config
46
+
47
+ configure_better_errors
48
+ end
49
+
50
+ # @api private
51
+ # @since 2.1.0
52
+ def call(env)
53
+ rescued_exception = nil
54
+ env[CAPTURE_EXCEPTION_PROC_KEY] = -> ex { rescued_exception = ex }
55
+
56
+ status, headers, body = @better_errors.call(env)
57
+
58
+ # Replace the BetterErrors status with a properly configured one for the Hanami app
59
+ if rescued_exception
60
+ status = Rack::Utils.status_code(
61
+ @config.render_error_responses[rescued_exception.class.name]
62
+ )
63
+ end
64
+
65
+ [status, headers, body]
66
+ end
67
+
68
+ private
69
+
70
+ # @api private
71
+ # @since 2.1.0
72
+ def configure_better_errors
73
+ BetterErrors.application_root = @config.root.to_s
74
+ end
75
+ end
76
+ end
77
+ end
@@ -3,6 +3,6 @@
3
3
  module Hanami
4
4
  module Webconsole
5
5
  # @since 0.1.0
6
- VERSION = "0.1.0"
6
+ VERSION = "2.1.0.beta2"
7
7
  end
8
8
  end
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "better_errors"
4
+ require "binding_of_caller"
5
+
3
6
  module Hanami
4
7
  # Hanami web console for development
5
8
  #
6
9
  # @since 0.1.0
7
10
  module Webconsole
8
- require "hanami/webconsole/version"
9
- require "hanami/webconsole/plugin"
11
+ require_relative "webconsole/version"
12
+ require_relative "webconsole/middleware"
10
13
  end
11
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-webconsole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 2.1.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-11 00:00:00.000000000 Z
11
+ date: 2023-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: better_errors
@@ -16,70 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
19
+ version: '2.9'
20
+ - - "<"
25
21
  - !ruby/object:Gem::Version
26
- version: '2.4'
27
- - !ruby/object:Gem::Dependency
28
- name: binding_of_caller
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.8'
22
+ version: 2.10.0
34
23
  type: :runtime
35
24
  prerelease: false
36
25
  version_requirements: !ruby/object:Gem::Requirement
37
26
  requirements:
38
27
  - - "~>"
39
28
  - !ruby/object:Gem::Version
40
- version: '0.8'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.16'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.16'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
29
+ version: '2.9'
30
+ - - "<"
60
31
  - !ruby/object:Gem::Version
61
- version: '12.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '12.0'
32
+ version: 2.10.0
69
33
  - !ruby/object:Gem::Dependency
70
- name: rspec
34
+ name: binding_of_caller
71
35
  requirement: !ruby/object:Gem::Requirement
72
36
  requirements:
73
37
  - - "~>"
74
38
  - !ruby/object:Gem::Version
75
- version: '3.7'
76
- type: :development
39
+ version: '1.0'
40
+ type: :runtime
77
41
  prerelease: false
78
42
  version_requirements: !ruby/object:Gem::Requirement
79
43
  requirements:
80
44
  - - "~>"
81
45
  - !ruby/object:Gem::Version
82
- version: '3.7'
46
+ version: '1.0'
83
47
  description: Hanami webconsole for development
84
48
  email:
85
49
  - me@lucaguidi.com
@@ -92,14 +56,14 @@ files:
92
56
  - README.md
93
57
  - hanami-webconsole.gemspec
94
58
  - lib/hanami/webconsole.rb
95
- - lib/hanami/webconsole/plugin.rb
59
+ - lib/hanami/webconsole/middleware.rb
96
60
  - lib/hanami/webconsole/version.rb
97
61
  homepage: http://hanamirb.org
98
62
  licenses:
99
63
  - MIT
100
64
  metadata:
101
65
  allowed_push_host: https://rubygems.org
102
- post_install_message:
66
+ post_install_message:
103
67
  rdoc_options: []
104
68
  require_paths:
105
69
  - lib
@@ -110,13 +74,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
74
  version: '0'
111
75
  required_rubygems_version: !ruby/object:Gem::Requirement
112
76
  requirements:
113
- - - ">="
77
+ - - ">"
114
78
  - !ruby/object:Gem::Version
115
- version: '0'
79
+ version: 1.3.1
116
80
  requirements: []
117
- rubyforge_project:
118
- rubygems_version: 2.7.6
119
- signing_key:
81
+ rubygems_version: 3.4.13
82
+ signing_key:
120
83
  specification_version: 4
121
84
  summary: Hanami webconsole
122
85
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "better_errors"
4
- require "binding_of_caller"
5
-
6
- Hanami.plugin do
7
- middleware.use BetterErrors::Middleware
8
- BetterErrors.application_root = Hanami.root.to_s
9
- end