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 +4 -4
- data/CHANGELOG.md +13 -0
- data/CODE_OF_CONDUCT.md +1 -1
- data/FEATURES.md +2 -0
- data/README.md +9 -7
- data/hanami.gemspec +9 -9
- data/lib/hanami/cli/commands/generate/action.rb +81 -1
- data/lib/hanami/cli/commands/generate/action/action.erb +5 -6
- data/lib/hanami/cli/commands/generate/action/action_without_view.erb +5 -7
- data/lib/hanami/cli/commands/generate/action/view.erb +5 -3
- data/lib/hanami/cli/commands/generate/app.rb +19 -7
- data/lib/hanami/cli/commands/generate/mailer/mailer.erb +7 -5
- data/lib/hanami/cli/commands/new.rb +9 -6
- data/lib/hanami/cli/commands/new/Gemfile.erb +1 -1
- data/lib/hanami/components/component.rb +14 -0
- data/lib/hanami/components/components.rb +1 -1
- data/lib/hanami/hanamirc.rb +1 -1
- data/lib/hanami/static.rb +11 -6
- data/lib/hanami/version.rb +1 -1
- metadata +23 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f4e30a96ce43cea6ebf7eaffdafbc799a0c02152e0f373a752da8c56f937780b
|
|
4
|
+
data.tar.gz: d2633353af5f2d4f49283aac9a231ae08956b4c4bb49c7c48013d0e495c9faa3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b312e7fe93fc48c2d3ec11cfa5a3f508e238347727d5fe90e6e8cd91e6aefb42e2e805dc0ced0d23bd4c27fcc977eb3c1adf6903e7909dddb5669a7706b03186
|
|
7
|
+
data.tar.gz: 2c096428a5bc74542c902ac2de30ac5475c5507ab9f7a01220386d438673f05500c69a4ebbd5fb1212c2a9990cf7f3bbebda7549a71fe7d467b288b9530560dc
|
data/CHANGELOG.md
CHANGED
|
@@ -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
|
data/CODE_OF_CONDUCT.md
CHANGED
|
@@ -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
|
|
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.
|
data/FEATURES.md
CHANGED
data/README.md
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
[](http://badge.fury.io/rb/hanami)
|
|
2
|
-
[](http://travis-ci.org/hanami/hanami?branch=master)
|
|
3
|
-
[](https://coveralls.io/r/hanami/hanami)
|
|
4
|
-
[](https://codeclimate.com/github/hanami/hanami)
|
|
5
|
-
[](https://gemnasium.com/hanami/hanami)
|
|
6
|
-
[](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
|
+
[](https://badge.fury.io/rb/hanami)
|
|
29
|
+
[](https://travis-ci.org/hanami/hanami)
|
|
30
|
+
[](https://codecov.io/gh/hanami/hanami)
|
|
31
|
+
[](https://depfu.com/github/hanami/hanami?project=Bundler)
|
|
32
|
+
[](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
|
data/hanami.gemspec
CHANGED
|
@@ -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.
|
|
25
|
-
spec.add_dependency 'hanami-validations', '~> 1.
|
|
26
|
-
spec.add_dependency 'hanami-router', '~> 1.
|
|
27
|
-
spec.add_dependency 'hanami-controller', '~> 1.
|
|
28
|
-
spec.add_dependency 'hanami-view', '~> 1.
|
|
29
|
-
spec.add_dependency 'hanami-helpers', '~> 1.
|
|
30
|
-
spec.add_dependency 'hanami-mailer', '~> 1.
|
|
31
|
-
spec.add_dependency 'hanami-assets', '~> 1.
|
|
32
|
-
spec.add_dependency 'hanami-cli', '~> 0.
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
234
|
+
destination = project.env(context, env)
|
|
223
235
|
|
|
224
236
|
files.append(destination, content)
|
|
225
237
|
say(:append, destination)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
module Mailers
|
|
2
|
+
class <%= mailer.classify %>
|
|
3
|
+
include Hanami::Mailer
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 = [
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
@@ -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
|
|
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)
|
data/lib/hanami/hanamirc.rb
CHANGED
data/lib/hanami/static.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
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, {
|
|
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 =
|
|
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 =
|
|
53
|
-
|
|
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
|
data/lib/hanami/version.rb
CHANGED
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.
|
|
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-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
390
|
+
version: 1.3.1
|
|
391
391
|
requirements: []
|
|
392
392
|
rubyforge_project:
|
|
393
|
-
rubygems_version: 2.7.
|
|
393
|
+
rubygems_version: 2.7.7
|
|
394
394
|
signing_key:
|
|
395
395
|
specification_version: 4
|
|
396
396
|
summary: The web, with simplicity
|