hanami 1.3.0.beta1 → 1.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4e30a96ce43cea6ebf7eaffdafbc799a0c02152e0f373a752da8c56f937780b
4
- data.tar.gz: d2633353af5f2d4f49283aac9a231ae08956b4c4bb49c7c48013d0e495c9faa3
3
+ metadata.gz: 870b0c86168d11ad956299e21d5539258f7ee546cc2464f1fcb574613077a924
4
+ data.tar.gz: eadbb4b369ae677fdfab342efaefdf7306b9f51cd6cb16563bab3c193e54df93
5
5
  SHA512:
6
- metadata.gz: b312e7fe93fc48c2d3ec11cfa5a3f508e238347727d5fe90e6e8cd91e6aefb42e2e805dc0ced0d23bd4c27fcc977eb3c1adf6903e7909dddb5669a7706b03186
7
- data.tar.gz: 2c096428a5bc74542c902ac2de30ac5475c5507ab9f7a01220386d438673f05500c69a4ebbd5fb1212c2a9990cf7f3bbebda7549a71fe7d467b288b9530560dc
6
+ metadata.gz: '03280999dd346b5d755e4a125750556cb2e7060f0191f6f5a77ad44c4f6844c50af036694edcad618c02e04ab39d5ed0911415d897a384519d95d15178a5e4fd'
7
+ data.tar.gz: 671e094c229f016afb38022c8253a85a89b1e3ecc9ef2f9662505c97677f4635c66f85d18519a3d79735187bc4923edacee489e65e2ed79aee60f2b4dd4e746f
@@ -1,6 +1,14 @@
1
1
  # Hanami
2
2
  The web, with simplicity.
3
3
 
4
+ ## v1.3.0 - 2018-10-24
5
+ ### Added
6
+ - [Luca Guidi] Automatically log body payload from body parsers
7
+
8
+ ### Fixed
9
+ - [Luca Guidi] Generate correct syntax for layout unit tests
10
+ - [Vladislav Yashin] Fix concatenation of `Pathname` and `String` in `Hanami::CommonLogger`
11
+
4
12
  ## v1.3.0.beta1 - 2018-08-08
5
13
  ### Added
6
14
  - [Sean Collins] Generate new projects with RSpec as default testing framework
@@ -3,7 +3,14 @@
3
3
 
4
4
  ## Features
5
5
 
6
- ## v1.3.0 (unreleased)
6
+ ## v1.3.0 - 2018-10-24
7
+
8
+ - Default testing framework is RSpec
9
+ - Introduced `Hanami::Middleware::BodyParser` Rack middleware
10
+ - Log payload (body) for non-GET HTTP requests coming from body parsers
11
+ - Added support for `reply_to` in mailers
12
+ - Variadic arguments for `hanami-cli`
13
+ - Array as argument or option for `hanami-cli`
7
14
 
8
15
  ## v1.2.0 - 2018-04-11
9
16
 
data/README.md CHANGED
@@ -47,7 +47,7 @@ cd bookshelf && bundle
47
47
  bundle exec hanami server # visit http://localhost:2300
48
48
  ```
49
49
 
50
- Please follow along with the [Getting Started guide](http://hanamirb.org/guides/getting-started).
50
+ Please follow along with the [Getting Started guide](https://guides.hanamirb.org/getting-started/).
51
51
 
52
52
  ## Donations
53
53
 
@@ -63,7 +63,8 @@ You can give back to Open Source, by supporting Hanami development via a [donati
63
63
 
64
64
  * Home page: http://hanamirb.org
65
65
  * Community: http://hanamirb.org/community
66
- * Guides: http://hanamirb.org/guides
66
+ * Guides: https://guides.hanamirb.org
67
+ * Snippets: https://snippets.hanamirb.org
67
68
  * Mailing List: http://hanamirb.org/mailing-list
68
69
  * API Doc: http://rdoc.info/gems/hanami
69
70
  * Bugs/Issues: https://github.com/hanami/hanami/issues
@@ -21,20 +21,20 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
23
23
 
24
- spec.add_dependency 'hanami-utils', '~> 1.3.beta'
25
- spec.add_dependency 'hanami-validations', '~> 1.3.beta'
26
- spec.add_dependency 'hanami-router', '~> 1.3.beta'
27
- spec.add_dependency 'hanami-controller', '~> 1.3.beta'
28
- spec.add_dependency 'hanami-view', '~> 1.3.beta'
29
- spec.add_dependency 'hanami-helpers', '~> 1.3.beta'
30
- spec.add_dependency 'hanami-mailer', '~> 1.3.beta'
31
- spec.add_dependency 'hanami-assets', '~> 1.3.beta'
32
- spec.add_dependency 'hanami-cli', '~> 0.3.beta'
24
+ spec.add_dependency 'hanami-utils', '~> 1.3'
25
+ spec.add_dependency 'hanami-validations', '~> 1.3'
26
+ spec.add_dependency 'hanami-router', '~> 1.3'
27
+ spec.add_dependency 'hanami-controller', '~> 1.3'
28
+ spec.add_dependency 'hanami-view', '~> 1.3'
29
+ spec.add_dependency 'hanami-helpers', '~> 1.3'
30
+ spec.add_dependency 'hanami-mailer', '~> 1.3'
31
+ spec.add_dependency 'hanami-assets', '~> 1.3'
32
+ spec.add_dependency 'hanami-cli', '~> 0.3'
33
33
  spec.add_dependency 'concurrent-ruby', '~> 1.0'
34
34
  spec.add_dependency 'bundler'
35
35
 
36
36
  spec.add_development_dependency 'rspec', '~> 3.7'
37
- spec.add_development_dependency 'rack-test', '~> 0.6'
37
+ spec.add_development_dependency 'rack-test', '~> 1.1'
38
38
  spec.add_development_dependency 'aruba', '~> 0.14'
39
39
  spec.add_development_dependency 'rake', '~> 12.0'
40
40
  end
@@ -191,12 +191,12 @@ module Hanami
191
191
 
192
192
  # Rack middleware stack
193
193
  #
194
- # @return [Hanami::Middleware] the middleware stack
194
+ # @return [Hanami::MiddlewareStack] the middleware stack
195
195
  #
196
196
  # @since 0.1.0
197
197
  # @api private
198
198
  #
199
- # @see Hanami::Middleware
199
+ # @see Hanami::MiddlewareStack
200
200
  attr_reader :middleware
201
201
  end
202
202
  end
@@ -1,6 +1,6 @@
1
1
  require 'hanami/utils/kernel'
2
2
  require 'hanami/environment'
3
- require 'hanami/middleware'
3
+ require 'hanami/middleware_stack'
4
4
  require 'hanami/config/cookies'
5
5
  require 'hanami/config/framework_configuration'
6
6
  require 'hanami/config/load_paths'
@@ -670,7 +670,7 @@ module Hanami
670
670
  # @since 0.2.0
671
671
  #
672
672
  # @see http://rdoc.info/gems/rack/Rack/Static
673
- # @see Hanami::Middleware#use
673
+ # @see Hanami::MiddlewareStack#use
674
674
  #
675
675
  # @example
676
676
  # require 'hanami'
@@ -684,7 +684,7 @@ module Hanami
684
684
  # end
685
685
  # end
686
686
  def middleware
687
- @middleware ||= Hanami::Middleware.new(self)
687
+ @middleware ||= Hanami::MiddlewareStack.new(self)
688
688
  end
689
689
 
690
690
  # Adapter configuration.
@@ -1,9 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe <%= app.classify %>::Views::ApplicationLayout do
4
- let(:layout) { <%= app.classify %>::Views::ApplicationLayout.new(template, {}) }
4
+ let(:layout) { <%= app.classify %>::Views::ApplicationLayout.new({ format: :html }, "contents") }
5
5
  let(:rendered) { layout.render }
6
- let(:template) { Hanami::View::Template.new('apps/<%= app %>/templates/application.html.<%= template %>') }
7
6
 
8
7
  it 'contains application name' do
9
8
  rendered.must_include('<%= app.classify %>')
@@ -1,9 +1,8 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe <%= app.classify %>::Views::ApplicationLayout, type: :view do
4
- let(:layout) { <%= app.classify %>::Views::ApplicationLayout.new(template, {}) }
4
+ let(:layout) { <%= app.classify %>::Views::ApplicationLayout.new({ format: :html }, "contents") }
5
5
  let(:rendered) { layout.render }
6
- let(:template) { Hanami::View::Template.new('apps/<%= app %>/templates/application.html.<%= template %>') }
7
6
 
8
7
  it 'contains application name' do
9
8
  expect(rendered).to include('<%= app.classify %>')
@@ -301,7 +301,7 @@ module Hanami
301
301
  application_name: options.fetch(:application_name),
302
302
  application_base_url: options.fetch(:application_base_url),
303
303
  hanami_head: options.fetch(:hanami_head),
304
- hanami_model_version: '~> 1.3.beta',
304
+ hanami_model_version: '~> 1.3',
305
305
  code_reloading: code_reloading?,
306
306
  hanami_version: hanami_version,
307
307
  project_module: Utils::String.classify(project),
@@ -1,4 +1,5 @@
1
1
  require 'rack/common_logger'
2
+ require 'hanami/utils/hash'
2
3
 
3
4
  module Hanami
4
5
  # Rack logger for Hanami.app
@@ -44,6 +45,10 @@ module Hanami
44
45
  # @api private
45
46
  FORM_HASH = 'rack.request.form_hash'.freeze
46
47
 
48
+ # @since 1.3.0
49
+ # @api private
50
+ ROUTER_PARAMS = 'router.params'.freeze
51
+
47
52
  # @since 1.0.0
48
53
  # @api private
49
54
  #
@@ -58,7 +63,7 @@ module Hanami
58
63
  verb: env[REQUEST_METHOD],
59
64
  status: status.to_s[0..3],
60
65
  ip: env[HTTP_X_FORWARDED_FOR] || env[REMOTE_ADDR],
61
- path: env[SCRIPT_NAME] + env[PATH_INFO],
66
+ path: env[SCRIPT_NAME] + env[PATH_INFO].to_s,
62
67
  length: length,
63
68
  params: extract_params(env),
64
69
  elapsed: now - began_at
@@ -73,11 +78,16 @@ module Hanami
73
78
  logger.info(msg)
74
79
  end
75
80
  end
81
+ # rubocop:enable Metrics/MethodLength
82
+ # rubocop:enable Metrics/AbcSize
76
83
 
77
84
  # @since 1.1.0
78
85
  # @api private
79
86
  def extract_params(env)
80
- (env[QUERY_HASH] || {}).merge(env[FORM_HASH] || {})
87
+ result = env.fetch(QUERY_HASH, {})
88
+ result.merge!(env.fetch(FORM_HASH, {}))
89
+ result.merge!(Utils::Hash.deep_stringify(env.fetch(ROUTER_PARAMS, {})))
90
+ result
81
91
  end
82
92
  end
83
93
  end
@@ -39,17 +39,19 @@ module Hanami
39
39
  resolver = Hanami::Routing::EndpointResolver.new(pattern: config.controller_pattern, namespace: namespace)
40
40
  default_app = Hanami::Routing::Default.new
41
41
 
42
- Hanami::Router.new(
42
+ options = {
43
43
  resolver: resolver,
44
44
  default_app: default_app,
45
- parsers: config.body_parsers,
46
45
  scheme: config.scheme,
47
46
  host: config.host,
48
47
  port: config.port,
49
48
  prefix: config.path_prefix,
50
- force_ssl: config.force_ssl,
51
- &config.routes
52
- )
49
+ force_ssl: config.force_ssl
50
+ }
51
+
52
+ options[:parsers] = config.body_parsers if config.body_parsers.any?
53
+
54
+ Hanami::Router.new(options, &config.routes)
53
55
  end
54
56
  end
55
57
  end
@@ -51,7 +51,7 @@ module Hanami
51
51
  # @since 0.9.0
52
52
  # @api private
53
53
  def hanami_app?(klass)
54
- klass.ancestors.include?(Hanami::Application)
54
+ klass <= Hanami::Application
55
55
  end
56
56
 
57
57
  # @since 0.9.0
@@ -138,7 +138,7 @@ module Hanami
138
138
  # @api private
139
139
  def apps
140
140
  mounted.each_pair do |klass, app|
141
- yield(app) if klass.ancestors.include?(Hanami::Application)
141
+ yield(app) if klass <= Hanami::Application
142
142
  end
143
143
  end
144
144
 
@@ -6,12 +6,12 @@ module Hanami
6
6
  #
7
7
  # @since 0.1.0
8
8
  # @api private
9
- class Middleware
9
+ class MiddlewareStack
10
10
  # Instantiate a middleware stack
11
11
  #
12
12
  # @param configuration [Hanami::ApplicationConfiguration] the application's configuration
13
13
  #
14
- # @return [Hanami::Middleware] the new stack
14
+ # @return [Hanami::MiddlewareStack] the new stack
15
15
  #
16
16
  # @since 0.1.0
17
17
  # @api private
@@ -25,7 +25,7 @@ module Hanami
25
25
 
26
26
  # Load the middleware stack
27
27
  #
28
- # @return [Hanami::Middleware] the loaded middleware stack
28
+ # @return [Hanami::MiddlewareStack] the loaded middleware stack
29
29
  #
30
30
  # @since 0.2.0
31
31
  # @api private
@@ -62,7 +62,7 @@ module Hanami
62
62
  #
63
63
  # @since 0.2.0
64
64
  #
65
- # @see Hanami::Middleware#prepend
65
+ # @see Hanami::MiddlewareStack#prepend
66
66
  #
67
67
  # @example
68
68
  # # apps/web/application.rb
@@ -89,7 +89,7 @@ module Hanami
89
89
  #
90
90
  # @since 0.6.0
91
91
  #
92
- # @see Hanami::Middleware#use
92
+ # @see Hanami::MiddlewareStack#use
93
93
  #
94
94
  # @example
95
95
  # # apps/web/application.rb
@@ -6,7 +6,7 @@ module Hanami
6
6
  module Version
7
7
  # @since 0.9.0
8
8
  # @api private
9
- VERSION = '1.3.0.beta1'.freeze
9
+ VERSION = '1.3.0'.freeze
10
10
 
11
11
  # @since 0.9.0
12
12
  # @api private
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: 1.3.0.beta1
4
+ version: 1.3.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: 2018-08-08 00:00:00.000000000 Z
11
+ date: 2018-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hanami-utils
@@ -16,126 +16,126 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.beta
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.beta
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hanami-validations
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3.beta
33
+ version: '1.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3.beta
40
+ version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hanami-router
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3.beta
47
+ version: '1.3'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.beta
54
+ version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: hanami-controller
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3.beta
61
+ version: '1.3'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.3.beta
68
+ version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hanami-view
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3.beta
75
+ version: '1.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3.beta
82
+ version: '1.3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: hanami-helpers
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.3.beta
89
+ version: '1.3'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.3.beta
96
+ version: '1.3'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: hanami-mailer
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.3.beta
103
+ version: '1.3'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.3.beta
110
+ version: '1.3'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: hanami-assets
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.3.beta
117
+ version: '1.3'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.3.beta
124
+ version: '1.3'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: hanami-cli
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.3.beta
131
+ version: '0.3'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.3.beta
138
+ version: '0.3'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: concurrent-ruby
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '0.6'
187
+ version: '1.1'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '0.6'
194
+ version: '1.1'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: aruba
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -353,7 +353,7 @@ files:
353
353
  - lib/hanami/frameworks.rb
354
354
  - lib/hanami/hanamirc.rb
355
355
  - lib/hanami/mailer/glue.rb
356
- - lib/hanami/middleware.rb
356
+ - lib/hanami/middleware_stack.rb
357
357
  - lib/hanami/rake_helper.rb
358
358
  - lib/hanami/rake_tasks.rb
359
359
  - lib/hanami/rendering_policy.rb
@@ -385,9 +385,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
385
385
  version: 2.3.0
386
386
  required_rubygems_version: !ruby/object:Gem::Requirement
387
387
  requirements:
388
- - - ">"
388
+ - - ">="
389
389
  - !ruby/object:Gem::Version
390
- version: 1.3.1
390
+ version: '0'
391
391
  requirements: []
392
392
  rubyforge_project:
393
393
  rubygems_version: 2.7.7