hanami 1.2.0 → 1.3.0.beta1

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