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 +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
|
-
[![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
|
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
|