hanami 1.2.0 → 1.3.0.beta1

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: bb4696deb8823bdf6752db359ae52572413f8c70034a1da7fff69a985f5b2197
4
- data.tar.gz: e1a7a701d91f583d88d3e08bbe41d62d1acbee8335cee5424299e63b0ea691e7
3
+ metadata.gz: f4e30a96ce43cea6ebf7eaffdafbc799a0c02152e0f373a752da8c56f937780b
4
+ data.tar.gz: d2633353af5f2d4f49283aac9a231ae08956b4c4bb49c7c48013d0e495c9faa3
5
5
  SHA512:
6
- metadata.gz: e5ef911aefd5c8fc76f9d59aec36ffcbbaed3dabd0ed815c719ff2b7beb4e1e327ed7389d09da5074c47b8d4aab532d675a0773fc70c79ce9f7056da1eba5b2b
7
- data.tar.gz: 10255439533478ad094430af917e7cda92d1a187a2e50e23b4e5c5abe39e60866fdf2bbb7b812f58c04af886d5bc41a3e5fd2ad96fd56bdb51cccf09e6d87e80
6
+ metadata.gz: b312e7fe93fc48c2d3ec11cfa5a3f508e238347727d5fe90e6e8cd91e6aefb42e2e805dc0ced0d23bd4c27fcc977eb3c1adf6903e7909dddb5669a7706b03186
7
+ data.tar.gz: 2c096428a5bc74542c902ac2de30ac5475c5507ab9f7a01220386d438673f05500c69a4ebbd5fb1212c2a9990cf7f3bbebda7549a71fe7d467b288b9530560dc
@@ -1,6 +1,19 @@
1
1
  # Hanami
2
2
  The web, with simplicity.
3
3
 
4
+ ## v1.3.0.beta1 - 2018-08-08
5
+ ### Added
6
+ - [Sean Collins] Generate new projects with RSpec as default testing framework
7
+ - [Alfonso Uceda] Generate actions/views/mailers with nested module/class definition
8
+
9
+ ### Fixed
10
+ - [Anton Davydov] Make possible to pass extra settings for custom logger instances (eg. `logger SemanticLogger.new, :foo, :bar`)
11
+ - [graywolf] Ensure `hanami generate app` to work without `require_relative` entries in `config/enviroment.rb`
12
+ - [Makoto Tajitsu & Luca Guidi] Fixed regression for `hanami new .` that used to generate a broken project
13
+
14
+ ### Fixed
15
+ - [John Downey] Don't use thread unsafe `Dir.chdir` to serve static assets
16
+
4
17
  ## v1.2.0 - 2018-04-11
5
18
 
6
19
  ## v1.2.0.rc2 - 2018-04-06
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
55
55
  ## Enforcement
56
56
 
57
57
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at [INSERT EMAIL ADDRESS]. All
58
+ reported by contacting the project team at *admin@hanamirb.org*. All
59
59
  complaints will be reviewed and investigated and will result in a response that
60
60
  is deemed necessary and appropriate to the circumstances. The project team is
61
61
  obligated to maintain confidentiality with regard to the reporter of an incident.
@@ -3,6 +3,8 @@
3
3
 
4
4
  ## Features
5
5
 
6
+ ## v1.3.0 (unreleased)
7
+
6
8
  ## v1.2.0 - 2018-04-11
7
9
 
8
10
  - HTTP/2 Early Hints
data/README.md CHANGED
@@ -1,10 +1,3 @@
1
- [![Gem Version](https://badge.fury.io/rb/hanami.svg)](http://badge.fury.io/rb/hanami)
2
- [![Build Status](https://secure.travis-ci.org/hanami/hanami.svg?branch=master)](http://travis-ci.org/hanami/hanami?branch=master)
3
- [![Coverage](https://coveralls.io/repos/hanami/hanami/badge.svg?branch=master)](https://coveralls.io/r/hanami/hanami)
4
- [![Code Climate](https://codeclimate.com/github/hanami/hanami.svg)](https://codeclimate.com/github/hanami/hanami)
5
- [![Dependencies](https://gemnasium.com/hanami/hanami.svg)](https://gemnasium.com/hanami/hanami)
6
- [![Inline docs](http://inch-ci.org/github/hanami/hanami.svg)](http://inch-ci.org/github/hanami/hanami)
7
-
8
1
  # Hanami :cherry_blossom:
9
2
 
10
3
  The web, with simplicity.
@@ -30,7 +23,16 @@ which provides the glue that ties all the parts together:
30
23
 
31
24
  These components are designed to be used independently or together in a Hanami application.
32
25
 
26
+ ## Status
27
+
28
+ [![Gem Version](https://badge.fury.io/rb/hanami.svg)](https://badge.fury.io/rb/hanami)
29
+ [![TravisCI](https://travis-ci.org/hanami/hanami.svg?branch=master)](https://travis-ci.org/hanami/hanami)
30
+ [![Test Coverage](https://codecov.io/gh/hanami/hanami/branch/master/graph/badge.svg)](https://codecov.io/gh/hanami/hanami)
31
+ [![Depfu](https://badges.depfu.com/badges/ba000e0f69e6ef1c44cd3038caaa1841/overview.svg)](https://depfu.com/github/hanami/hanami?project=Bundler)
32
+ [![Inline Docs](http://inch-ci.org/github/hanami/hanami.svg)](http://inch-ci.org/github/hanami/hanami)
33
+
33
34
  ## Installation
35
+
34
36
  __Hanami__ supports Ruby (MRI) 2.3+
35
37
 
36
38
  ```shell
@@ -21,15 +21,15 @@ 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.2'
25
- spec.add_dependency 'hanami-validations', '~> 1.2'
26
- spec.add_dependency 'hanami-router', '~> 1.2'
27
- spec.add_dependency 'hanami-controller', '~> 1.2'
28
- spec.add_dependency 'hanami-view', '~> 1.2'
29
- spec.add_dependency 'hanami-helpers', '~> 1.2'
30
- spec.add_dependency 'hanami-mailer', '~> 1.2'
31
- spec.add_dependency 'hanami-assets', '~> 1.2'
32
- spec.add_dependency 'hanami-cli', '~> 0.2'
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'
33
33
  spec.add_dependency 'concurrent-ruby', '~> 1.0'
34
34
  spec.add_dependency 'bundler'
35
35
 
@@ -34,7 +34,11 @@ module Hanami
34
34
  classified_controller_name = classified_controller(controller)
35
35
  http_method = route_http_method(action, options)
36
36
  context = Context.new(app: app, controller: controller, classified_controller_name: classified_controller_name, action: action, test: options.fetch(:test), http_method: http_method, options: options)
37
- context = context.with(template: project.template(context))
37
+ context = context.with(template: project.template(context),
38
+ action_class_definition: action_class_definition(context),
39
+ view_class_definition: view_class_definition(context),
40
+ beginning_module_definition: beginning_module_definition(context),
41
+ ending_module_definition: ending_module_definition(context))
38
42
 
39
43
  assert_valid_app!(context)
40
44
  assert_valid_route_url!(context)
@@ -52,6 +56,82 @@ module Hanami
52
56
 
53
57
  private
54
58
 
59
+ # @since 1.3.0
60
+ # @api private
61
+ def beginning_module_definition(context)
62
+ length = context.classified_controller_name.split("::").size
63
+ first_indentation = " " * 4
64
+ indentation = first_indentation
65
+ beginning_module_definition = ""
66
+
67
+ context.classified_controller_name.split("::").each_with_index do |module_name, index|
68
+ beginning_module_definition += "module #{module_name}".prepend(indentation)
69
+ beginning_module_definition += "\n" unless length == index + 1
70
+ indentation += " "
71
+ end
72
+ beginning_module_definition
73
+ end
74
+
75
+ # @since 1.3.0
76
+ # @api private
77
+ def ending_module_definition(context)
78
+ length = context.classified_controller_name.split("::").size
79
+ first_indentation = " " * 4
80
+ indentation = first_indentation + " " * (length - 1)
81
+ ending_module_definition = ""
82
+
83
+ context.classified_controller_name.split("::").each_with_index do |_, index|
84
+ ending_module_definition += "end".prepend(indentation)
85
+ ending_module_definition += "\n" unless length == index + 1
86
+ indentation = " " * (indentation.size - 2)
87
+ end
88
+ ending_module_definition
89
+ end
90
+
91
+ # @since 1.3.0
92
+ # @api private
93
+ def action_class_definition(context)
94
+ body_line_position = 4
95
+ view_class = [
96
+ "class #{context.action.classify}",
97
+ " include #{context.app.classify}::Action",
98
+ "",
99
+ " def call(params)",
100
+ " end",
101
+ "end"
102
+ ]
103
+ view_class.insert(body_line_position, " self.body = 'OK'") if skip_view?(context)
104
+
105
+ add_indentation_to_class_definition(context, view_class)
106
+ end
107
+
108
+ # @since 1.3.0
109
+ # @api private
110
+ def view_class_definition(context)
111
+ view_class = [
112
+ "class #{context.action.classify}",
113
+ " include #{context.app.classify}::View",
114
+ "end"
115
+ ]
116
+
117
+ add_indentation_to_class_definition(context, view_class)
118
+ end
119
+
120
+ # @since 1.3.0
121
+ # @api private
122
+ def add_indentation_to_class_definition(context, view_content)
123
+ length = context.classified_controller_name.split("::").size
124
+ first_indentation = " " * 4
125
+ indentation = first_indentation + " " * length * 2
126
+
127
+ content = ""
128
+ view_content.each do |line|
129
+ next content += "\n" if line.empty?
130
+ content += "#{line}\n".prepend(indentation)
131
+ end
132
+ content.chomp
133
+ end
134
+
55
135
  # @since 1.1.0
56
136
  # @api private
57
137
  def controller_and_action_name(name)
@@ -1,8 +1,7 @@
1
- module <%= app.classify %>::Controllers::<%= classified_controller_name %>
2
- class <%= action.classify %>
3
- include <%= app.classify %>::Action
4
-
5
- def call(params)
6
- end
1
+ module <%= app.classify %>
2
+ module Controllers
3
+ <%= beginning_module_definition %>
4
+ <%= action_class_definition %>
5
+ <%= ending_module_definition %>
7
6
  end
8
7
  end
@@ -1,9 +1,7 @@
1
- module <%= app.classify %>::Controllers::<%= classified_controller_name %>
2
- class <%= action.classify %>
3
- include <%= app.classify %>::Action
4
-
5
- def call(params)
6
- self.body = 'OK'
7
- end
1
+ module <%= app.classify %>
2
+ module Controllers
3
+ <%= beginning_module_definition %>
4
+ <%= action_class_definition %>
5
+ <%= ending_module_definition %>
8
6
  end
9
7
  end
@@ -1,5 +1,7 @@
1
- module <%= app.classify %>::Views::<%= classified_controller_name %>
2
- class <%= action.classify %>
3
- include <%= app.classify %>::View
1
+ module <%= app.classify %>
2
+ module Views
3
+ <%= beginning_module_definition %>
4
+ <%= view_class_definition %>
5
+ <%= ending_module_definition %>
4
6
  end
5
7
  end
@@ -191,7 +191,17 @@ module Hanami
191
191
  content = "require_relative '../apps/#{context.app}/application'"
192
192
  destination = project.environment(context)
193
193
 
194
- files.inject_line_after(destination, /require_relative '\.\.\/lib\/.*'/, content)
194
+ req_regex = /^\s*require .*$/
195
+ rel_regex = /^\s*require_relative .*$/
196
+
197
+ case File.read(destination)
198
+ when rel_regex
199
+ files.inject_line_after_last(destination, rel_regex, content)
200
+ when req_regex
201
+ files.inject_line_after_last(destination, req_regex, content)
202
+ else
203
+ raise "No require found"
204
+ end
195
205
  say(:insert, destination)
196
206
  end
197
207
 
@@ -208,18 +218,20 @@ module Hanami
208
218
  # @since 1.1.0
209
219
  # @api private
210
220
  def append_development_http_session_secret(context)
211
- content = %(#{context.app.upcase}_SESSIONS_SECRET="#{project.app_sessions_secret}")
212
- destination = project.env(context, "development")
213
-
214
- files.append(destination, content)
215
- say(:append, destination)
221
+ append_env_to_http_session_secret(context, "development")
216
222
  end
217
223
 
218
224
  # @since 1.1.0
219
225
  # @api private
220
226
  def append_test_http_session_secret(context)
227
+ append_env_to_http_session_secret(context, "test")
228
+ end
229
+
230
+ private
231
+
232
+ def append_env_to_http_session_secret(context, env)
221
233
  content = %(#{context.app.upcase}_SESSIONS_SECRET="#{project.app_sessions_secret}")
222
- destination = project.env(context, "test")
234
+ destination = project.env(context, env)
223
235
 
224
236
  files.append(destination, content)
225
237
  say(:append, destination)
@@ -1,7 +1,9 @@
1
- class Mailers::<%= mailer.classify %>
2
- include Hanami::Mailer
1
+ module Mailers
2
+ class <%= mailer.classify %>
3
+ include Hanami::Mailer
3
4
 
4
- from '<%= from %>'
5
- to '<%= to %>'
6
- subject '<%= subject %>'
5
+ from '<%= from %>'
6
+ to '<%= to %>'
7
+ subject '<%= subject %>'
8
+ end
7
9
  end
@@ -146,7 +146,7 @@ module Hanami
146
146
 
147
147
  # @since 1.1.0
148
148
  # @api private
149
- VALID_FRAMEWORKS = [MINITEST, RSPEC].freeze
149
+ VALID_FRAMEWORKS = [RSPEC, MINITEST].freeze
150
150
 
151
151
  # @since 1.1.0
152
152
  # @api private
@@ -282,7 +282,9 @@ module Hanami
282
282
  # rubocop:disable Metrics/AbcSize
283
283
  # rubocop:disable Metrics/MethodLength
284
284
  def call(project:, **options)
285
- project = Utils::String.underscore(project)
285
+ project_name = project
286
+ pwd = ::File.basename(Dir.pwd) if project == "."
287
+ project = Utils::String.underscore(pwd || project)
286
288
  database_config = DatabaseConfig.new(options[:database], project)
287
289
  test_framework = TestFramework.new(hanamirc, options[:test])
288
290
  template_engine = TemplateEngine.new(hanamirc, options[:template])
@@ -299,7 +301,7 @@ module Hanami
299
301
  application_name: options.fetch(:application_name),
300
302
  application_base_url: options.fetch(:application_base_url),
301
303
  hanami_head: options.fetch(:hanami_head),
302
- hanami_model_version: '~> 1.2',
304
+ hanami_model_version: '~> 1.3.beta',
303
305
  code_reloading: code_reloading?,
304
306
  hanami_version: hanami_version,
305
307
  project_module: Utils::String.classify(project),
@@ -308,7 +310,7 @@ module Hanami
308
310
 
309
311
  assert_project_name!(context)
310
312
 
311
- directory = project_directory(project)
313
+ directory = project_directory(project_name, project)
312
314
  files.mkdir(directory)
313
315
 
314
316
  Dir.chdir(directory) do
@@ -532,8 +534,9 @@ module Hanami
532
534
 
533
535
  # @since 1.1.0
534
536
  # @api private
535
- def project_directory(project)
536
- @name == '.' ? '.' : project
537
+ def project_directory(project_name, project)
538
+ return Dir.pwd if project_name == '.'
539
+ project
537
540
  end
538
541
 
539
542
  # @since 1.1.0
@@ -41,7 +41,7 @@ end
41
41
 
42
42
  <%- end -%>
43
43
  group :test, :development do
44
- gem 'dotenv', '~> 2.0'
44
+ gem 'dotenv', '~> 2.4'
45
45
  end
46
46
 
47
47
  group :test do
@@ -46,6 +46,12 @@ module Hanami
46
46
 
47
47
  private
48
48
 
49
+ # @since 1.3.0
50
+ # @api private
51
+ #
52
+ # @see Hanami::Component#logger_interface?
53
+ LOGGER_METHODS = %i[info warn debug]
54
+
49
55
  # Component name
50
56
  #
51
57
  # @return [String]
@@ -163,6 +169,14 @@ module Hanami
163
169
  def resolved(name, value = nil, &blk)
164
170
  Components.resolved(name, value, &blk)
165
171
  end
172
+
173
+ # Check that instance has logger interfaces (#info, #warn and #debug)
174
+ #
175
+ # @since 1.3.0
176
+ # @api private
177
+ def logger_interface?(instance)
178
+ LOGGER_METHODS.all? { |method| instance.respond_to?(method) }
179
+ end
166
180
  end
167
181
  end
168
182
  end
@@ -29,7 +29,7 @@ module Hanami
29
29
 
30
30
  resolve do |configuration|
31
31
  if configuration.logger.is_a?(Array)
32
- if configuration.logger.first.is_a?(::Logger)
32
+ if logger_interface?(configuration.logger.first)
33
33
  configuration.logger.first
34
34
  else
35
35
  Hanami::Logger.new(Hanami.environment.project_name, *configuration.logger)
@@ -29,7 +29,7 @@ module Hanami
29
29
  # @api private
30
30
  #
31
31
  # @see Hanami::Hanamirc#default_options
32
- DEFAULT_TEST_SUITE = 'minitest'.freeze
32
+ DEFAULT_TEST_SUITE = 'rspec'.freeze
33
33
 
34
34
  # Test suite key for writing the hanamirc file
35
35
  #
@@ -1,4 +1,6 @@
1
- require 'rack/static'
1
+ # frozen_string_literal: true
2
+
3
+ require "rack/static"
2
4
 
3
5
  module Hanami
4
6
  # Serve static assets in deployment environments (production, staging) where
@@ -30,11 +32,11 @@ module Hanami
30
32
 
31
33
  # @since 0.8.0
32
34
  # @api private
33
- HEADER_RULES = [[:all, { 'Cache-Control' => "public, max-age=#{MAX_AGE}" }]].freeze
35
+ HEADER_RULES = [[:all, { "Cache-Control" => "public, max-age=#{MAX_AGE}" }]].freeze
34
36
 
35
37
  # @since 0.8.0
36
38
  # @api private
37
- URL_PREFIX = '/'.freeze
39
+ URL_PREFIX = "/"
38
40
 
39
41
  # @since 0.6.0
40
42
  # @api private
@@ -49,10 +51,13 @@ module Hanami
49
51
  def _urls(root)
50
52
  return [] unless root.exist?
51
53
 
52
- asset_files = Dir.chdir(root) do
53
- Dir['**/*'].select { |path| File.file? path }
54
+ asset_files = Pathname.glob(root.join("**", "*"))
55
+ .select(&:file?)
56
+
57
+ asset_files.each_with_object({}) do |path, result|
58
+ path = path.relative_path_from(root)
59
+ result["#{URL_PREFIX}#{path}"] = path
54
60
  end
55
- Hash[asset_files.map { |entry| ["#{URL_PREFIX}#{entry}", entry] }]
56
61
  end
57
62
  end
58
63
  end
@@ -6,7 +6,7 @@ module Hanami
6
6
  module Version
7
7
  # @since 0.9.0
8
8
  # @api private
9
- VERSION = '1.2.0'.freeze
9
+ VERSION = '1.3.0.beta1'.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.2.0
4
+ version: 1.3.0.beta1
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-04-11 00:00:00.000000000 Z
11
+ date: 2018-08-08 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.2'
19
+ version: 1.3.beta
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.2'
26
+ version: 1.3.beta
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.2'
33
+ version: 1.3.beta
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.2'
40
+ version: 1.3.beta
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.2'
47
+ version: 1.3.beta
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.2'
54
+ version: 1.3.beta
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.2'
61
+ version: 1.3.beta
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.2'
68
+ version: 1.3.beta
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.2'
75
+ version: 1.3.beta
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.2'
82
+ version: 1.3.beta
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.2'
89
+ version: 1.3.beta
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.2'
96
+ version: 1.3.beta
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.2'
103
+ version: 1.3.beta
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.2'
110
+ version: 1.3.beta
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.2'
117
+ version: 1.3.beta
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.2'
124
+ version: 1.3.beta
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.2'
131
+ version: 0.3.beta
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.2'
138
+ version: 0.3.beta
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: concurrent-ruby
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -385,12 +385,12 @@ 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: '0'
390
+ version: 1.3.1
391
391
  requirements: []
392
392
  rubyforge_project:
393
- rubygems_version: 2.7.6
393
+ rubygems_version: 2.7.7
394
394
  signing_key:
395
395
  specification_version: 4
396
396
  summary: The web, with simplicity