hanami 1.3.0.beta1 → 1.3.0

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: 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